batファイルの実行中、作業者にごちゃごちゃしたコマンドプロンプトの中身を見せたくないという場面もあると思います。そんな時に加えることで処理を隠すコマンドを紹介します。
実行中のbatファイルの処理を隠すコマンド
まずは何もせずに以下のファイル “test.bat” を実行してみます。
実行結果
ごちゃごちゃしていて少し見栄えが良くありませんね、では上記のbatファイルの頭に @echo off と書き加えてみます。
そのほかは何も変えず実行してみます……
実行結果だけが表示されるようになり、すっきりしました。
実行結果も隠したいときは?
「いやいや、確かに処理は隠れているけど、実行結果すら見せたくないんだ」という場合はどうでしょうか。
そんな時は以下のように処理の末尾に >nul を加えてみましょう。
実行結果
処理結果も表示されなくなりました。
これは > (リダイレクト)によって出力先を指定しているのですが、指定先を nul (無) にすることで表示させなくしています。
この処理ではエラーメッセージは表示されてしまうため、エラーメッセージも表示させたくないときは、さらに末尾に 2>&1 と書き加えましょう。
これは「2(エラーメッセージ) の >(出力先) を &1(通常の出力) にする」という意味です。
コマンドプロンプトのウィンドウ自体を表示させない方法①
以下の方法でウィンドウを自体を最小化することで、処理を簡易的に隠すこともできます。
以下の画像のように”test.bat” 内の @echo off の次行に
@if not “%~0″==”%~dp0.\%~nx0″ start /min cmd /c,”%~dp0.\%~nx0” %* & goto :eof を加えます。
実行結果
コマンドプロンプトウィンドウが最小化され処理が実行されました。
この利点としてはユーザーが処理中に誤ってコマンドプロンプトのウィンドウを閉じることの予防に使えます。
コマンドプロンプトのウィンドウ自体を表示させない方法②
最小化したコマンドプロンプトがタスクバー表示すらさせたくない場合もあると思います。
そんな時はVBSファイルとタスクスケジューラーを経由することで表示をさせずに実行することができます。
!!batファイル内に確認を要する項目がある場合正常に起動しないので注意してください。!!
(※このため前述の test.bat で行う場合は文末の pause を消去しています。)
VBSファイル “SilentStart.vbs” を以下のように作成します。
Set ws = CreateObject(“Wscript.Shell”)
ws.run “cmd /c <VBSファイルの絶対パス>”, vbhide
このまま起動しても、普通に実行されるだけですが……
タスクスケジューラーを起動し、操作 – タスクの作成 を選択します。
タスクの作成 が開くので 全般 タブで名前を入力します。今回は ”SilentStart” とします。
トリガー タブを選択し、 新規 のボタンをクリックします。
新しいトリガー の タスクの開始 から任意のスケジュールを設定し OK をクリックします(無くても手動で起動できます)。
操作 タブへ移動し、新規 のボタンをクリック。
開いた 新しい操作 から以下の通りに設定する。
① 操作 からプログラムの開始 を選択
② プログラム/スクリプト にVBSファイルのパスを入力
③ ①②が終わったら OK ボタンをクリック
操作タブ内の 操作に VBSファイルが追加されたことを確認し、OKをクリック。
タスクスケジューラー(ローカル) – タスクスケジューラライブラリにタスクが追加されたことを確認し、右クリックから 実行する を選択します。
何も表示されなければ成功です。
おわりに
上記の方法を目的に合わせて使うことで、簡単に表示を隠すことができます。
特に @echo off は必ずと言っていいほど使うことになると思います。