批处理文件将文件复制到许多机器

时间:2009-06-05 14:59:05

标签: file batch-file copy

我需要一个批处理文件,将我本地目录中的文件(8)复制到网络上的计算机列表(主机名或IP),或让我提示输入下一个主机名/ ip

我不想一遍又一遍地运行脚本来输入下一个主机名/ ip

我还需要查看每个系统的输出,以确保连接正确并成功复制。也许是“准备下一步了?”每台机器之后?

我不知道如何让批处理文件相当于STDIN,所以请原谅?STDIN?占位符

到目前为止,我所拥有的只是

net use S: \\?STDIN?\C$ /user:domain\myusername mypassword  

copy %~file01.txt S:\%SystemRoot%\system32 /y
copy %~file02.txt S:\%SystemRoot%\system32 /y
copy %~file03.txt S:\%SystemRoot%\system32 /y
copy %~file04.txt S:\%SystemRoot%\system32 /y
copy %~file05.txt S:\%SystemRoot%\system32 /y
copy %~file06.txt S:\%SystemRoot%\system32 /y
copy %~file07.txt S:\%SystemRoot%\system32 /y
copy %~file08.txt S:\%SystemRoot%\system32 /y

net use :s /delete

do it again

2 个答案:

答案 0 :(得分:1)

您可以使用set /p命令提示用户输入(并将其存储到环境变量中):

set /p HOST=Machine?
net use S: \\%HOST%\C$ ...

您可以使用标签循环并跳转到它。不过,你应该提供退出的方法:

:loop
set /p HOST=Machine? (leave blank to exit)
if [%HOST%]==[] goto :EOF
net use S: \\%HOST%\C$ ...
copy ...
...
goto loop

如果您不想单独输入每个主机名,您还可以循环遍历批处理文件的参数:

:loop
if [%1]==[] goto :EOF
net use S: \\%1\C$ ...
copy ...
...
shift
goto loop

你可以按如下方式调用它,然后:

my_batch machine1 machine2 192.168.12.14 ...

HTH

答案 1 :(得分:0)

您可以使用“if ERRORLEVEL 1”查看副本中是否发生错误,这样可以捕获副本的问题。然而,除了“if EXIST”以检查文件是否存在之外,您可能会得到一些长度为零的文件。

尽管如此,您可能希望将Powershell作为一项功能更强大的工具进行调查。

相关问题