如何读取文本文件的内容并为每一行运行命令?

时间:2013-08-05 10:08:51

标签: batch-file

我有一个批处理文件,可通过vpn远程连接到计算机,以使用robocopy下载文件。 目前,它要求每台机器的域凭据和IP地址。

我们有100多台机器,每次输入命令都需要输入IP,这非常令人讨厌。

我要查找的是在每行上都有一个带有IP地址的文本文件,并且批处理文件为每个IP地址运行其robocopy命令。用户只需输入一次域名凭证即可。

这就是我目前所拥有的:

@ECHO OFF

SET /P ipaddress= Please enter an IP address
SET /P sitenum= Please enter the store number
CLS
SET /P user= Please enter your domain username
SET /P pass= Please enteer your domain password
CLS

Set filedate=%date:/=%


NET USE \\%ipaddress%\IPC$ /u:DOMAIN\%user% %pass% 

ECHO Copying Dataset...
Robocopy "\\%ipaddress%\C$\ProgramData\App\Data" /Z /S "D:\Transfer Files\%sitenum%\%filedate%\Data" /eta
ECHO Done!

ECHO Copying ControlPoint Server Data....
Robocopy "\\%ipaddress%\C$\ProgramData\App\MoreData" /Z /S "D:\Transfer Files\%sitenum%\%filedate%\More Data" /eta
ECHO Done!

NET USE \\%ipaddress%\IPC$ /D

这可能是我使用googles帮助汇总的最高级批处理!

我已经研究过“/ F”代币“但是就我所知,那就好了。我通常喜欢自己制作这些东西,但有一次我被卡住了。

2 个答案:

答案 0 :(得分:4)

从文本文件中读取IP:

for /f "delims=" %%a in (IPs.TXT) do (
    NET USE \\%%a\IPC$ /u:DOMAIN\%user% %pass% 
    ECHO Copying Dataset...
    Robocopy "\\%%a\C$\ProgramData\App\Data" /Z /S "D:\Transfer Files\%sitenum%\%filedate%\Data" /eta
    ECHO Done!

   ECHO Copying ControlPoint Server Data....
   Robocopy "\\%%a\C$\ProgramData\App\MoreData" /Z /S "D:\Transfer Files\%sitenum%\%filedate%\More Data" /eta
   ECHO Done!

   NET USE \\%%a\IPC$ /D
)

答案 1 :(得分:1)

为了为文件中的每一行运行一次脚本,您可以使用以下代码包围脚本:

while read data; do
    //your scipt goes here
done

$data将包含文件中的一行(因此,IP地址)。

然后你就可以使用你的脚本:yourScript.sh < ipFile.txt