如何将文件从列表复制到计算机?

时间:2019-04-19 06:28:46

标签: batch-file copy

我尝试将文件从特定的网络位置复制到列表中的多台计算机,并在复制之前检查目标是否存在。

这是用于公司的手动更新软件文件的。它已经过测试并且可以运行,但是需要进行微调。

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
    )

我希望找到一个目标,但是我想检查两个目标是否都存在并复制。

1 个答案:

答案 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"
)

我希望为环境变量Target32Target64定义一个反斜杠,以真正测试目录的存在并在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 /?