treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

VBSを使って画面非表示でバッチファイルを連続実行してみる

以前にインストール済アプリケーションのアップデートを想定したバッチファイルを作成しましたが、これをWindowsのタスクスケジューラに仕掛けてバックグラウンドで自動実行するように構成してみたので、ご報告です。
バッチファイルでは限界があるので、VBSの力を借りることにしました。

以前作成したバージョンアップ用のバッチファイル

以前にCubePDFのバージョンアップを自動実行で実施する

バッチファイルでアプリケーションのバージョンを比較して実行 - treedown’s Report

バッチファイルを作成しました。
これを、ちょっと調整(かるく編集)して、7-zipとかCubePDF UtilityとかVLC Playerなどもアップデートできるバッチを作成して、自動化を試みたのですが、実行時にDOS窓が表示されてユーザから快くない反応が返ってきそうです。

そこで、非表示でこれらを連続実行できないものか、これを考えてみることにしました。

環境と構成は

事例として<C:\Users\user-1\AutoUpdate>に以下のようにファイルを配置する。
--------------------------------------------------------------
C:\Users\user-1\AutoUpdate>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は A6F7-771E です

 C:\Users\user-1\AutoUpdate のディレクトリ

2021/12/07  19:09    <DIR>          .
2021/12/07  19:09    <DIR>          ..
2021/12/03  16:36             4,549 7Zupdate.bat
2021/11/22  14:15             3,402 CubePVerUp.bat
2021/11/24  16:01             3,752 CubeUVerUp.bat
2021/12/03  16:25             4,193 VLCupdate.bat
2021/12/07  18:40               261 _AutoUpd.vbs
               5 個のファイル              16,157 バイト
               3 個のディレクトリ  118,958,563,328 バイトの空き領域

C:\Users\user-1\AutoUpdate>
--------------------------------------------------------------

7Zupdate.batやVLCupdate.batは別で作成したアップデートバッチ(サイレント実行、ただしDOS窓は画面表示される)です。

これらを_AutoUpd.vbsで連続実行かつ画面非表示実行するようにしました。
そのVBSの中身は、

--------------------------------------------------------------
_AutoUpd.vbs
--------------------------------------------------------------
Dim auexWShell
Set auexWShell = CreateObject("WScript.Shell")
auexWShell.run "cmd /c C:\Users\user-1\AutoUpdate\VLCupdate.bat", vbHide
auexWShell.run "cmd /c C:\Users\user-1\AutoUpdate\7Zupdate.bat", vbHide
auexWShell.run "cmd /c C:\Users\user-1\AutoUpdate\CubePVerUp.bat", vbHide
auexWShell.run "cmd /c C:\Users\user-1\AutoUpdate\CubeUVerUp.bat", vbHide
Set auexWShell = Nothing
--------------------------------------------------------------

これ(_AutoUpd.vbs)をタスクスケジューラに配置します。例えばログオン時に実行などで実行するようにします。

タスクスケジューラで指定

タスクスケジューラから「基本タスクの作成」でウィザードを実行します。

f:id:treedown:20211213031135p:plain名前は分かるような名前を付けておきます。

f:id:treedown:20211213031207p:plainトリガはユーザのログオン時にしました。

f:id:treedown:20211213031221p:plain「プログラムの開始」が選択されている状態で次へ。

f:id:treedown:20211213031241p:plain実行するプログラムとしてフルパスでVBSファイル_AutoUpd.vbsを指定します。
cscriptの引数で指定しなきゃいけないかと思っていたのですが、上記のように直接「ファイル.vbs」指定で動作しました。

最後の画面で完了後に、タスクのプロパティ画面から

f:id:treedown:20211213031256p:plain
「最上位の特権で実行する」にチェックを入れておきます。

この状態で、サインインしてテスト実行してみると、Windows10で動作しました。
※アップデートバッチでソフトがアップデートすることと、その画面が非表示になることと、指定したバッチファイルが連続実行されること

PC個別に仕掛ける必要がありますが、一度仕掛けてしまえば、あとはアップデートバッチで指定した場所(共有フォルダなど)に保管している新バージョンのインストール.exeを更新するだけで、アップデートの更新ができそうです。(まだテスト環境でしか試していませんけど)