我有一个批处理文件,我想在Windows关机时运行(通过GPO关闭脚本执行),但我只希望它在一定数量的系统关闭后运行,而不是在每次关闭时运行。这是因为它会导致关机过程中的延迟,并希望减少中断。每X次运行执行批处理文件
我可以考虑的唯一的事情是构建一些逻辑来检查计算机关闭了多少次,并且在超过定义的阈值后批处理文件被执行,但是谁会有一个例子来说明如何做到这一点?我搜索,但只发现如何运行一个脚本每x个周期或时间,而不是每个x运行的例子。
在此先感谢!
我有一个批处理文件,我想在Windows关机时运行(通过GPO关闭脚本执行),但我只希望它在一定数量的系统关闭后运行,而不是在每次关闭时运行。这是因为它会导致关机过程中的延迟,并希望减少中断。每X次运行执行批处理文件
我可以考虑的唯一的事情是构建一些逻辑来检查计算机关闭了多少次,并且在超过定义的阈值后批处理文件被执行,但是谁会有一个例子来说明如何做到这一点?我搜索,但只发现如何运行一个脚本每x个周期或时间,而不是每个x运行的例子。
在此先感谢!
@ECHO OFF
SET LIMIT=4
SET SAVEFILE="COUNT.TXT"
SETLOCAL ENABLEDELAYEDEXPANSION
REM Get the current count or start a new file if it does not exist.
IF EXIST %SAVEFILE% GOTO READFILE
ECHO 0 >%SAVEFILE%
:READFILE
SET /P COUNT= <%SAVEFILE%
REM Increment the save file value by one.
FOR %%B IN ("%SAVEFILE%") DO (
CALL :ADD_ONE
)
ECHO %COUNT% >%SAVEFILE%
GOTO CHECK_VALUE
:ADD_ONE
SET /A COUNT+=1
GOTO :EOF
REM Conditionally reset the counter and do something.
:CHECK_VALUE
IF %COUNT% LSS %LIMIT% EXIT /B
DEL %SAVEFILE% 2>NUL
ECHO Do your stuff here...
再次感谢 - 将检查并回报! – scatterbits
非常感谢你的创作! – scatterbits
您可以在每次关机时调用您的批处理文件,并在关闭阈值未满足时在顶部包含以下内容以中止。
@echo off
::Test if the shutdown threshold has been met. Exit if it hasn't
setlocal
set /a "threshold=5, cnt=1"
set shutdownCountFile="C:\SomePath\shutdownCount.txt"
if exist %shutdownCountFile% for /f "usebackq" %%A in (%shutdownCountFile%) do set /a cnt=%%A+1
if %cnt% geq %threshold% (
2>nul del %shutdownCountFile%
endlocal
) else (
>%shutdownCountFile% echo %cnt%
exit /b
)
:: Your batch process goes here
您还可以使用注册表项来跟踪关闭的数量而不是文件。
这看起来不错!非常感谢您的回复 - 非常感谢:)将尽快测试并报告;) – scatterbits
Windows XP - >“usebackq”此时出乎意料。 – kbulgrien
好的,我测试了这个,我想我不明白什么需要在shutdownCount.txt文件中?这就是我得到: C:\用户\埃雷兹\桌面> 1.BAT C:\用户\埃雷兹\桌面> SETLOCAL C:\用户\埃雷兹\桌面>设置/“门槛= 5,cnt = 1“ C:\ Users \ Erez \ Desktop> set shutdownCountFile =”C:\ Users \ Erez \ Desktop \ shutdownCount.txt“ ”usebackq“此时意外。 (“C:\ Users \ Erez \ Desktop \ shutdownCount.txt”)中的%F“usebackq”%A的C:\ Users \ Erez \ Desktop> do set/a cnt =%A + 1 C: \ Users \ Erez \ Desktop> – scatterbits
使用存储在文件中的计数器,然后在每次运行批处理文件时读取并更新它。 – Jay