我需要一个批处理文件,将我本地目录中的文件(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 :(得分: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作为一项功能更强大的工具进行调查。