我尝试将文件从特定的网络位置复制到列表中的多台计算机,并在复制之前检查目标是否存在。
这是用于公司的手动更新软件文件的。它已经过测试并且可以运行,但是需要进行微调。
For /F "usebackq tokens=*" %%a in ("C:\Test\PCList.txt") Do (
IF Exist "\\%%a\%Target32%" (robocopy "%source32%" "\\%%a\%Target32%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x86_%date:~10,4%.%date:~7,2%.%date:~4,2%.log"
) Else IF Exist "\\%%a\%Target64%" (robocopy "%source64%" "\\%%a\%Target64%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x64_%date:~10,4%.%date:~7,2%.%date:~4,2%.log"
) Else END
)
我希望找到一个目标,但是我想检查两个目标是否都存在并复制。
答案 0 :(得分:0)
我建议使用以下代码:
for /F "usebackq delims=" %%a in ("C:\Test\PCList.txt") do (
if exist "\\%%a\%Target32%" %SystemRoot%\System32\robocopy.exe "%source32%" "\\%%a\%Target32%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x86_%date:~10,4%.%date:~7,2%.%date:~4,2%.log"
if exist "\\%%a\%Target64%" %SystemRoot%\System32\robocopy.exe "%source64%" "\\%%a\%Target64%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x64_%date:~10,4%.%date:~7,2%.%date:~4,2%.log"
)
我希望为环境变量Target32
和Target64
定义一个反斜杠,以真正测试目录的存在并在source32
和{{1}中复制文件}到目录。
顺便说一句:带有不必要的source64
的代码不会在错误消息中存在的两个目录中得到结果:
'END'不被识别为内部或外部命令,
可操作的程序或批处理文件。
我还建议在年份和月份之间以及月份和日期之间使用ELSE END
而不是%date:~10,4%-%date:~7,2%_%date:~4,2%.log
来创建日志文件名-
。文件名中只能有一个点,文件扩展名中可以有一个点,尽管文件名中可以有多个点。
如果在目标计算机上找不到两个目录,则此代码也进行了记录:
.
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
if not "%Target32:~-1%" == "\" set "Target32=%Target32%\"
if not "%Target64:~-1%" == "\" set "Target64=%Target64%\"
for /F "usebackq delims=" %%a in ("C:\Test\PCList.txt") do (
set "Copied="
if exist "\\%%a\%Target32%" set "Copied=1" & %SystemRoot%\System32\robocopy.exe "%source32%" "\\%%a\%Target32%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x86_%date:~10,4%-%date:~7,2%-%date:~4,2%.log"
if exist "\\%%a\%Target64%" set "Copied=1" & %SystemRoot%\System32\robocopy.exe "%source64%" "\\%%a\%Target64%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x64_%date:~10,4%-%date:~7,2%-%date:~4,2%.log"
if not defined Copied echo Nothing copied to %%a.>"%logdir%\%%a_err_%date:~10,4%-%date:~7,2%-%date:~4,2%.log"
)
for /?
if /?
robocopy /?