共有フォルダでバージョン管理しているexeを実行するバッチファイル

サーバーの共有フォルダ等でバージョン管理しているインストールexeを実行するバッチファイルです。




具体的に言うとFireFoxの最新版がリリースされる度に、社内サーバーの共有フォルダから最新のインストールexeを叩かないといけないんですね。

そんなもん自動更新にしろよ・・・と思うのですが、担当者が動作確認しないと適用してはいけないんだとさ。

いちいちサーバーに接続してフォルダを見に行くのが面倒なのでショートカットを作成したのですが、ファイル名にタイムスタンプが入っているので新しいものに置き換えられると機能しない・・・

なので、ファイル名が変更されてもexeを実行できるようにバッチ化してしまいました。
勿論、このバッチファイルはFirefox以外のインストーラーでも使えます。
なんならexeではなくbatでも、他の拡張子にすることもできます。


このバッチを使用する際は下記2つの前提条件があります。

1.パスが変わらないこと。
2.フォルダ内にexeが1つしか存在しないこと。

パスは決め打ちなので当然という感じですが、exeに関しては現状だとどうしようもありませんね。

フォルダ内に最新版から過去のexeまでずらーっと並んでいる・・・みたいなのはお手上げです。

まあ、普通なら古いexeは削除するか「旧バージョン」みたいなフォルダを作ってそちらに放り込むと思うのですが。

Install-20191024.exeとか、Installer.70.0.exeとか、命名規則があれば比較して該当するexeを実行する・・・という処理を組み込めばなんとかできそうですね。

流石にそこまで頑張って作るなら手動でやります。
今後の為に作ってみたい気もしますが。


バッチファイルのソースコードは下記になります。





やっていることは至極単純。
for文でフォルダ内のファイル名の末尾4桁を切り出して「.exe」か判断し、これがexeなら実行します。

for文の中で文字列の切り出しがうまくいかなかったのですが、下記のリンク先を参考にして、文字列の切り出しをサブルーチン化させました。

【MS-DOS】ファイル内の文字列を1行ずつ読み込んで、読み込んだ文字列から切り出す
るきふぃえる's memo 様


C:\Users\○○○\Documents

上記を任意のパス名に変更してください。(パス名の最後に「\*」が必要です)



if "%str:~-4%"==".exe" (

変数strに格納したファイル名の末尾4桁が「.exe」であるか判断して処理を分岐します。
これを「.bat」に変えればバッチファイルが起動するようにもできます。
.xlsxなど拡張子が4文字の場合は「-4%」を「-5%」にしてください。


楽する為に全力を出している感がありますね。
まあ、遠隔で数台にインストールとか考えるとこっちの方が楽です。