用于跳过关闭计算机的Windows批处理逻辑
我正在使用第三方实用程序(setacl.exe)获取所有权并更改许多联网计算机上单个文件的权限。我尝试过使用Powershell,但放弃了,改用setacl.exe和批处理文件。该脚本然后将32位IE可执行文件复制到64位文件夹(这需要做的原因很复杂:))用于跳过关闭计算机的Windows批处理逻辑
批处理文件运行良好 - 它读取我想要进行更改的计算机,从一个文本文件 - ,直到我点击一台断电的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%
怎么样一个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-loop中。
也许这应该做的伎俩?
编辑: 这可能是一个更容易理解的版本:
@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文件)。没有testet复制的东西,使用robocopy命令行,我会用这种解决方案。 :) 请尝试。
我试过这个,但脚本停摆了,我必须中断它 - 日志文件只显示robocopy标题和日期戳 – Kvinneby 2014-11-06 15:54:00
既然我已经确定我的语法是正确的,它仍然停滞不前,并且日志显示'网络路径未找到' – Kvinneby 2014-11-06 16:17:28
这将如何工作与这部分该脚本(我得到的命令的语法是不正确的)? (“ping -n 1 %% i”)中的/ f“usebackq delims =”%% i(Computers.txt)do(for/f“tokens = 5,7”%% a do(if“x %% a“==”xReceived“if”x %% b“==”x1,“ do setacl.exe -on”\\ %% i \ C $ \ Program Files \ Internet Explorer \ iexplore.exe“ - ot file -actn setowner -ownr“n:S-1-5-32-544”)>>%logfile%)) – Kvinneby 2014-11-06 19:02:48
在命令行中键入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次。
这听起来很吓人你正在尝试做什么。 – 2014-11-06 15:03:29
实际上,这很简单,只是缺少的IF THEN逻辑引发了我的循环(循环 - 得到它?:)) – Kvinneby 2014-11-06 15:08:56
我的意思是手动管理一个像这样的微软文件。 – 2014-11-06 15:09:33