2

我有一个 COPY 批处理文件,它将文件复制到多台计算机(大约 300 个,正在从单独的文本文件中读取),我想查看文件复制的结果。如果我能看到成功和失败的文件副本,那就太好了。但是如果只能看到失败的副本就可以了。

这是我现在拥有的代码,效果很好。这些文件正在被复制到我设置的测试计算机上。提前感谢大家抽出时间来帮助我解决这个问题。

for /f "Tokens=*" %%a in (c:\computers.txt) do (set MyVar=%%a& call :next)

pause
goto EOF

:next
echo %MyVar%

if exist "\\%MyVar%\C$\Users\Public\Desktop" (
    Copy "C:\document search.website" "\\%MyVar%\c$\Users\Public\Desktop\" /Y 
    Copy "C:\document search.website" "\\%MyVar%\C$\Users\Public\Favorites\" /Y
) else ( copy "C:\document search.website" "\\%MyVar%\c$\Documents and Settings\All Users\Desktop\Document Search.url" /y
     copy "C:\document search.website" "\\%MyVar%\C$\Documents and Settings\All Users\Favorites\Document Search.url" /y 
)
4

2 回答 2

3

您可以在脚本的开头添加以下脚本

call :Logit>>C:\logfiles_location\file_transfer.log 2>&1
:Logit

echo Start time is: %date% %TIME%
于 2013-10-15T16:08:13.857 回答
1

您需要将copy命令的输出重定向到文件。但是,该copy命令将只打印复制的结果,而不包括文件名(例如1 file(s) copied.)。因此,您应该在您正在执行的操作的日志中添加一个额外的日志行。

REM Flush the previous log file
echo. > someLogFile.log

for /f "Tokens=*" %%a in (c:\computers.txt) do (set MyVar=%%a& call :next)

pause
goto EOF

:next
echo %MyVar%

if exist "\\%MyVar%\C$\Users\Public\Desktop" (
    echo Copying to %MyVar% desktop... > someLogFile.log
    Copy "C:\document search.website" "\\%MyVar%\c$\Users\Public\Desktop\" /Y >> someLogFile.log

    echo Copying to %MyVar% favorites... > someLogFile.log
    Copy "C:\document search.website" "\\%MyVar%\C$\Users\Public\Favorites\" /Y >> someLogFile.log
) else ( 
    echo Copying to %MyVar% desktop... > someLogFile.log
    copy "C:\document search.website" "\\%MyVar%\c$\Documents and Settings\All Users\Desktop\Document Search.url" /y >> someLogFile.log

    echo Copying to %MyVar% favorites... > someLogFile.log
    copy "C:\document search.website" "\\%MyVar%\C$\Documents and Settings\All Users\Favorites\Document Search.url" /y >> someLogFile.log
)
于 2013-10-15T16:17:05.113 回答