我们有一个批处理文件,用于将脚本(robo)复制到我们网络上的各个计算机。
我们需要能够将复制操作的结果(成功或失败)写入包含服务器名称的输出文件。
这是我在此过程中所处的位置,但不知道该如何进行。
@echo off
for /F "tokens=*" %%i in (Maquinas_log.txt) do (
robocopy.exe "E:\HERRAMIENTAS\SCRIPTS\ActualizarFirmas" \\%%i\c$\temp firmas.exe /R:1 /W:1
)
exit
答案1
我认为你需要知道的是错误级别。
如果您使用call :label <params>
,您可以用这里没有用到的方式来分解逻辑。 有很多方法可以做到没有call :label
语法,但我更喜欢这种方法。
运行 robocopy 后,您需要查看 ERRORLEVEL 变量以确定是否成功。您还可以简单地检查 robocopy 行之后是否存在该文件。
像这样:
@echo off
Set SalidaArchivo=%TEMP%\RobocopyResults.txt
for /F "tokens=*" %%i in (Maquinas_log.txt) do call :RoboCopyFileWithResults "%%i"
goto :EOF
:: Note: goto :EOF arriba es "volver a la función de llamada".. en este caso saldrá
:: Note: goto :EOF above means "return to the calling function" which in this case will exit the batch.
:: ----------------------------------------------------------------
:RoboCopyFileWithResults
Set ServidorNombre=%~1
robocopy.exe "E:\HERRAMIENTAS\SCRIPTS\ActualizarFirmas" \\%%i\c$\temp firmas.exe /R:1 /W:1
echo %ServidorNombre%=%ERRORLEVEL% >>%SalidaArchivo%
goto :EOF
:: Note: goto :EOF arriba es "volver a la función de llamada"
:: Note: goto :EOF above means "return to the calling function"