2009-06-05 79 views
1

我需要一个批处理文件,将本地目录中的文件(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 
+0

我最终使用“windows”而不是systemroot,并且还删除了%〜(它允许它在系统上下文下运行,而不是从命令行运行) – Mathew 2009-06-05 17:22:10

回答

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

0

您可以使用 “如果ERRORLEVEL 1” 看如果副本中出现错误,可以让您陷入复制问题。除了用“if EXIST”来检查文件是否在那里,你可能会得到一些零长度的文件。

虽然,您可能希望调查PowerShell作为一项更有能力的工具。

相关问题