2

Windows シャットダウン (GPO シャットダウン スクリプトを介して実行) で実行したいバッチ ファイルがありますが、シャットダウンごとではなく、特定の回数のシステム シャットダウン後にのみ実行したいと考えています。これは、シャットダウン プロセスに遅延が発生し、混乱を減らしたいためです。

私が考えることができる唯一のことは、コンピューターがシャットダウンされ、定義されたしきい値を超えた後にバッチファイルが実行された回数をチェックするロジックを構築することですが、これを行う方法の例はありますか? 検索しましたが、x 実行ごとではなく、x 期間または x 回ごとにスクリプトを実行する方法の例しか見つかりませんでした。

前もって感謝します!

4

2 に答える 2

1
@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...
于 2012-08-28T15:16:26.543 に答える
1

シャットダウンのたびにバッチ ファイルを呼び出し、先頭に以下を含めて、シャットダウンのしきい値に達していない場合に中止することができます。

@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

ファイルの代わりにレジストリ エントリを使用して、シャットダウンの回数を追跡することもできます。

于 2012-08-28T14:06:35.663 に答える