如何通过针对服务器列表运行复制操作来获取结果输出文件?

如何通过针对服务器列表运行复制操作来获取结果输出文件?

我们有一个批处理文件,用于将脚本(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"

相关内容