使用读取文本文件的for循环替换多行批处理文件

时间:2013-12-27 19:41:48

标签: windows batch-file cmd psexec

我目前有一个批处理文件,用于安排chkdsk在多个服务器上运行,等待下次重启 -

c:\pstools\psexec \\server1 -d -u Domain\administrator cmd /c "echo Y | chkdsk c: /F"  
c:\pstools\psexec \\server2 -d -u Domain\administrator cmd /c "echo Y | chkdsk c: /F"  
c:\pstools\psexec \\server3 -d -u Domain\administrator cmd /c "echo Y | chkdsk c: /F"  
c:\pstools\psexec \\server4 -d -u Domain\administrator cmd /c "echo Y | chkdsk c: /F"  
c:\pstools\psexec \\server5 -d -u Domain\administrator cmd /c "echo Y | chkdsk c: /F"  

我试图理解如何构造一个FOR循环,它将读取由 -

组成的txt文件
server1  
server2  
server3  
server4  

txt文件将位于我本地e:驱动器的数据文件夹中。另外,有没有办法不必多次输入用户ID的密码?感谢指导!感谢所有人新年快乐!

2 个答案:

答案 0 :(得分:2)

您可以使用FOR,但您也可以创建一个名为servers.txt的文件,其中包含:

server1
server2
server3
server4

并运行此命令:

c:\pstools\psexec @servers.txt ...your command...

PsExec将在文件中列出的每台计算机上执行该命令。请参阅psexec documentation here,并查看@file参数。

答案 1 :(得分:1)

这是一个for循环方法:

@echo off
for /f "delims=" %%a in (servers.txt) do (
   c:\pstools\psexec \\%%a -d -u Domain\administrator cmd /c "echo Y | chkdsk c: /F"  
)