バッチファイル自身に自動アップデート機能を搭載する方法

バッチファイル自身に自動アップデート機能を搭載する方法を紹介します。複数のPCの一括適用に便利です。

需要

Windows PC数十台が稼働しており、それぞれのPCは個人で自由に使えるようにしています。ある作業をするためにバッチファイルを使っています。すべてのPCからNASに接続できるようにしてあり、バッチファイルのバージョンアップ時は、各自NASからダウンロードして上書き保存をするようにしていました。ユーザーの手間を削減できればいいなと思い自動アップデート機能を搭載しました。

方法

NASに最新バージョンのみを記載したテキストファイルと最新版のバッチを設置します。バッチには、作業の最後に最新版があれば更新してから終了するようにプログラムを作成しました。ファイルの末尾に記載するのがミソです。このあとに他の作業を行うと不具合がおきます(gotoなど)。
SET /A CURRENTVERSION=10
SET /P NEWVERSION=<"\\NAS\[~]version"
if %CURRENTVERSION% LSS %NEWVERSION% (copy /y "\\NAS\[~]バッチ.bat" %0)
CURRENTVERSION に現在のバージョン、最新バージョンのみを記載したテキストファイルの内容を NEWVERSION に代入して比較し、 NEWVERSION の方が大きい場合は自身のバッチ(%0)へ上書きコピーするという仕組みです。
意外と簡単に実装できました。

@bicstone

大石貴則 (Ōishi Takanori) と申します。 Webエンジニア / セキュリティスペシャリスト / 機械エンジニア です。 プロダクトに幅広く携わり、相互成長し続けられるエンジニアを目指しています。

GitHubLinkedIn