0

我有一个批处理文件,它通过 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

这可能是我使用谷歌帮助整理的最高级的批次!

我已经研究了“/ F”令牌,但据我所知,我通常喜欢自己构建这些东西,但有一次我被卡住了。

4

2 回答 2

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
)
于 2013-08-05T10:14:33.133 回答
1

为了为文件中的每一行运行一次脚本,您可以在脚本周围加上:

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

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

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

于 2013-08-05T10:15:10.517 回答