我正在使用第三方实用程序(setacl.exe)获取所有权并更改许多联网计算机上单个文件的权限。我尝试使用Powershell,但放弃了,使用setacl.exe而不是批处理文件。然后脚本将32位IE可执行文件复制到64位文件夹(这需要完成的原因很复杂:))
批处理文件运行良好 - 它从文本文件中读取我想要进行更改的计算机 - 直到我关闭已关机的PC或已经运行受影响的进程。 / p>
我一直在玩跳过PC的逻辑,但我无法让它发挥作用。有人可以帮忙吗?脚本的复制部分(完美地运行)如下:
@echo off
set Logfile="%~dpn0.log"
for /f "usebackq delims=" %%i in (Computers.txt) do robocopy "\\%%i\C$\Program Files (x86)\Internet Explorer" "\\%%i\C$\Program Files\Internet Explorer" "iexplore.exe" >>%logfile%
答案 0 :(得分:0)
ping检查怎么样?
for /f "tokens=5,7" %%a in ('ping -n 1 %%i') do (
if "x%%a"=="xReceived" if "x%%b"=="x1," <your robocopy commandline here>
)
就在你的第一个for循环中。
也许这应该可以解决问题?
编辑: 这可能是一个更容易理解的版本:
@ECHO OFF
SET "LOGFILE=%~dpn0.log"
FOR /F %%I IN (Computers.txt) DO (
FOR /F "TOKENS=3,5,7 SKIP=5 DELIMS=,= " %%A IN ('PING -n 1 %%I') DO (
IF %%~A%%~B%%~C EQU 110 (
CALL :RoboCopyJob %%I
)
)
)
GOTO :EOF
:RoboCopyJob
ECHO ROBOCOPY "\\%~1\C$\Program Files (x86)\Internet Explorer" "\\%~1\C$\Program Files\Internet Explorer" "iexplore.exe" /R:0 /NP /LOG+:"%~DP0RoboCopy.log" /TEE >>"%LOGFILE%"
GOTO :EOF
以上代码适用于我(保存到 .cmd / .bat文件)。我试图复制一些东西,使用了机器人命令行,我会用这些解决方案。 :) 请试一试。
答案 1 :(得分:0)
在命令行中,键入ROBOCOPY /?
以查看所有选项。
这是本案的相关部分:
::
:: Retry Options :
::
/R:n :: number of Retries on failed copies: default 1 million.
/W:n :: Wait time between retries: default is 30 seconds.
/REG :: Save /R:n and /W:n in the Registry as default settings.
/TBD :: wait for sharenames To Be Defined (retry error 67).
将/R:0
作为参数添加到ROBOCOPY
命令中。这将使ROBOCOPY
在失败前重试0次。