【Windows】タスクスケジューラからbat実行時、vbsを使用してコマンドウィンドウを非表示とする

【Windows】タスクスケジューラからbat実行時、vbsを使用してコマンドウィンドウを非表示とする

実現したいこと

タスクスケジューラからbatを自動実行する際、以下のようなコマンドの黒いウィンドウが表示されて煩わしい場合があります。この事象をvbs(vbscript)を使って非表示とします。

今回使用した環境

Windows 11 24H2

※クライアントの環境で試していますが、サーバーの環境でも可能だと思います。テストは自身でお願いします。

用意したソース

bat, vbsの2ファイルを用意しました。

何らかの処理を行う想定のbatファイルです。今回はpingを10回要求するようにしてあります。

cd /d C:\dev
ping -n 10 localhost>何らかの処理.log

batファイルの呼び出しを行うvbsです。このvbsを介してbatを呼び出すことでコマンドウィンドウを非表示とします。vbsは汎用的に使えるようにbatのパスを引数として指定できるようにしてあります。

'引数の取得
Dim batPath
Set args = WScript.Arguments
batPath = args(0)

'batの実行
'※Runメソッド
'  第1引数:実行するbatのパス
'  第2引数:0(ウィンドウ非表示)
'  第3引数:True(第1引数に指定した処理完了を待つ)
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run batPath, 0, True

タスクスケジューラの設定

特に気にするのは「操作」タブの設定方法なのでそこだけを説明します。

「タスクの作成」から「操作」タブにて新規ボタンをクリックします。

操作で「プログラムの開始」、プログラム/スクリプトで「wscript」、
引数の追加で「//Nologo “C:\dev\bat呼出.vbs" “C:\dev\何らかの処理.bat"」を指定しました。

※プログラム/スクリプトで「cscript」としてしまうとタスク実行時にcscriptのウィンドウが表示されてしまうのでここでは「wscript」としてあります。

動作確認

タスクの自動実行にてコマンドのウィンドウが表示されることなく (ウィンドウが表示されなかったかどうかはこの画像からはわからないですが…) batが実行され、「何らかの処理.log」が出力されました。


以上となります。

ここまでお読みいただきありがとうございました。

Windows

Posted by だゆう