我尝试将文件从特定网络位置复制到列表中的多台计算机,并在复制之前检查目标是否存在。
这是用于公司的手动更新软件文件的。它已经过测试并且可以正常工作,但是需要进行微调。
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
)
我希望找到一个目标,但是我想检查两个目标是否都存在并复制。
我建议作为代码:
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
并source64
到一个目录。
顺便说一句:您的代码ELSE END
在错误消息中不存在的两个目录中都没有不必要的结果:
无法将“ 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 /?
set /?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句