Batch Script to Auto Update Sysinternals Tools

By Jason Faulkner on July 27th, 2010

While the Microsoft Sysinternals tools are incredibly powerful and useful, the one feature they lack is the ability to check for new versions. Currently, you have to periodically check the Sysinternals site and compare versions between your system and the most recent official release in order to stay up to date.

As a better solution, we have created a batch script which will automatically update the Sysinternals tools you have on your system. All you have to do is put the batch script file into the folder where your Sysinternals tools are located and the script does the rest, no configuration is needed.

Here is how it works:

  • The current list of tools from Sysinternals is downloaded and compared to the files on your system.
  • If a match is found, the current version from Sysinternals is copied to your system.
  • If a tool is currently running, it is closed and then restarted once the script completes.

The Script

@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

Links

Download Sysinternals Updater Script from Sysadmin Geek

Jason Faulkner is a developer and IT professional who never has a hot cup of coffee far away. Interact with him on Google+

  • Published 07/27/10
More Articles You Might Like

Enter Your Email Here to Get Access for Free:

Go check your email!