/ / Sysinternalsツールを自動更新するバッチスクリプト

Sysinternalsツールを自動更新するバッチスクリプト

Microsoft Sysinternalsツールは信じられないほど強力で便利な機能の1つに、新しいバージョンをチェックする機能があります。現在、Sysinternalsサイトを定期的に確認し、システムと最新の公式リリースとの間でバージョンを比較して、最新の状態に保つ必要があります。

より良い解決策として、バッチを作成しましたシステムにあるSysinternalsツールを自動的に更新するスクリプト。行う必要があるのは、バッチスクリプトファイルをSysinternalsツールが配置されているフォルダーに入れ、スクリプトが残りを実行するだけです。構成は必要ありません。

以下にその仕組みを示します。

  • Sysinternalsからのツールの現在のリストがダウンロードされ、システム上のファイルと比較されます。
  • 一致が見つかった場合、Sysinternalsの現在のバージョンがシステムにコピーされます。
  • ツールが現在実行中の場合、ツールは閉じられ、スクリプトが完了すると再起動されます。

スクリプト

@ECHO OFF
TITLE Sysinternals Updater
ECHO Sysintenals Updater
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.
SETLOCAL ENABLEDELAYEDEXPANSION
SET SysInternalsTools="%Temp%SysInternalsTools.tmp.txt"
SET CurrentTasks="%Temp%CurrentTasks.tmp.txt"
SET StartWhenFinished="%Temp%StartWhenFinished.tmp.txt"
ECHO Detected directory: %~dp0
%~d0
CD %~p0
ECHO.
ECHO.
ECHO Downloading current tool list...
SET LiveShare=live.sysinternals.comtools
START /MIN %LiveShare%
DIR %LiveShare% /B > %SysInternalsTools%
TASKLIST > %CurrentTasks%
ECHO ;Terminated tools > %StartWhenFinished%
ECHO.
ECHO Updating installed SysInternals tools
FOR /F %%A IN ('DIR /B') DO (
FOR /F "usebackq" %%B IN (%SysInternalsTools%) DO (
IF /I [%%A]==[%%B] (
ECHO Updating %%A
FOR /F "usebackq" %%C IN (%CurrentTasks%) DO (
IF /I [%%A]==[%%C] (
ECHO %%C is currently running, killing process - queue restart
ECHO %%C >> %StartWhenFinished%
TASKKILL /IM %%A /T /F
)
)
XCOPY %LiveShare%%%B %%A /Y
ECHO.
)
)
)
ECHO.
ECHO Resuming killed tasks
FOR /F "usebackq skip=1" %%A IN (%StartWhenFinished%) DO (
ECHO Starting %%A
START "Sysinternals Tool" "%%A"
)
IF EXIST %SysInternalsTools% DEL %SysInternalsTools%
IF EXIST %CurrentTasks% DEL %CurrentTasks%
IF EXIST %StartWhenFinished% DEL %StartWhenFinished%
ENDLOCAL
ECHO.
PAUSE

リンク集

Sysadmin GeekからSysinternals Updaterスクリプトをダウンロードする