今回は、バッチファイル「.bat」または「.cmd」を実行した際に表示されるコマンドプロンプトのウィンドウを、最小化または非表示で実行するプログラム「CMD_MinRun.exe」を紹介します。
バックグラウンドでバッチファイルを実行したい場合などにご利用ください。
「CMD_MinRun.exe」の仕組みと使用方法
仕組み
- 「CMD_MinRun.exe」は直接実行することはできません
- 拡張子「.bat」または「.cmd」以外のファイルを実行することはできません
プログラムの実行時に、プログラムに渡されたコマンドライン引数を読み取り、パラメータの数が「0」である(引数がない)場合は直接実行したと判断し、メッセージを表示してプログラムを終了します。
パラメータの数が「0」以外であれば(引数があれば)、正規表現を使い、引数のファイルが拡張子「.bat」または「.cmd」であるかを判断し、拡張子が違えばメッセージを表示してプログラムを終了します。
パラメータの数が「0」以外であり、拡張子が「.bat」または「.cmd」であればバッチファイルを最小化または非表示の状態で実行します。
※プログラムはバッチファイルを実行後すぐに終了します。
使用方法
1.バッチファイルを左クリックして離さず、「CMD_MinRun.exe」の上に持って行きクリックを離します。(ドラッグ&ドロップ)
2.ファイル名を指定して実行やコマンドプロンプト、タスクスケジューラなどからコマンドを実行する。
例えば、ドキュメントフォルダーにある「Bacup.bat」を実行したい場合は、”「CMD_MinRun.exe」のパス”、半角スペース、”実行したいバッチファイル”、というように書きます。
"%USERPROFILE%\Documents\CMD_MinRun.exe" "%USERPROFILE%\Documents\Bacup.bat"
「CMD_MinRun.exe」の場所はバッチファイルと同じ場所でなくても構いませんが、必ず各パスをダブルクォーテーションで囲んでおきましょう。
タスクスケジューラに登録する場合は、「プログラム/スクリプト(P):」に「CMD_MinRun.exe」のパスを、「引数の追加 (オプション)(A):」にバッチファイルのパスを指定してください。
例えば、定期的にバックグラウンドで何かのファイルをバックアップしたいときなどに、作業中にコマンドプロンプトのウィンドウが表示されては困るという場合に邪魔にならず便利です。
2024/04/26 Ver 1.0.0.1 :
オプション「/h」を追加しました。オプション「/h」を使うと、ウィンドウを非表示の状態で実行することができます。
例:
"%USERPROFILE%\Documents\CMD_MinRun.exe" "%USERPROFILE%\Documents\Edge_Profile_Bacup.bat" /h
「CMD_MinRun.exe」のソースコードとダウンロード
ソースコード(Ver 1.0.0.0)
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile_x64=CMD_MinRun.exe
#AutoIt3Wrapper_Res_Description=バッチファイルを最小化した状態で実行します。
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_ProductName=CMD_MinRun
#AutoIt3Wrapper_Res_ProductVersion=1.0
#AutoIt3Wrapper_Res_CompanyName=©2024 wenbang https://windows-waza.com/
#AutoIt3Wrapper_Res_LegalCopyright=©2024 wenbang https://windows-waza.com/
#AutoIt3Wrapper_Res_LegalTradeMarks=CMD_MinRun.exe
#AutoIt3Wrapper_Res_Language=1041
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
If $CmdLine[0] = 0 Then Exit MsgBox(16 + 262144, "エラー", "このプログラムは直接実行することはできません。", 0)
If StringRegExp($CmdLine[1], "\.bat$|\.cmd$", 0) Then
Run(@ComSpec & ' /c "' & $CmdLine[1] & '"', "", @SW_MINIMIZE)
Else
Exit MsgBox(16 + 262144, "エラー", "このプログラムは、拡張子が「.bat」または「.cmd」以外は実行できません。", 0)
EndIf
ソースコードの解説
Autoit の $CmdLine には、プログラムに渡されたコマンドライン引数のデータが入っています。
$CmdLine[0] にはパラメータの数、$CmdLine[1] には「CMD_MinRun.exe」で実行したプログラムのパスが代入されます。
次のコードでは、パラメータの数をチェックしており、パラメータ数が「0」の場合はプログラムを終了し、「このプログラムは直接実行することはできません。」というメッセージボックスを表示します。
If $CmdLine[0] = 0 Then Exit MsgBox(16 + 262144, "エラー", "このプログラムは直接実行することはできません。", 0)
次のコードは、「CMD_MinRun.exe」で実行したファイルのパスの拡張子(後ろの 4文字)が「.bat」または「.cmd」であるかを正規表現(StringRegExp)でチェックしています。
もしも拡張子が「.bat」または「.cmd」であれば、バッチファイルを最小化した状態で実行します。
拡張子が違う場合はプログラムを終了し、「このプログラムは、拡張子が「.bat」または「.cmd」以外は実行できません。」というメッセージボックスを表示します。
If StringRegExp($CmdLine[1], "\.bat$|\.cmd$", 0) Then
Run(@ComSpec & ' /c "' & $CmdLine[1] & '"', "", @SW_MINIMIZE)
Else
Exit MsgBox(16 + 262144, "エラー", "このプログラムは、拡張子が「.bat」または「.cmd」以外は実行できません。", 0)
EndIf
ダウンロード
2024/04/26 Ver 1.0.0.1:
オプション「/h」を追加しました。オプション「/h」を使うと、ウィンドウを非表示の状態で実行することができます。
ハッシュ値:対象「CMD_MinRun.exe」
SHA256 ハッシュ値:(1.0.0.0)
32320fae04c765592650eaf9b7fa5be33fce3774d73ca12d5b9428eec9f297e0
SHA256 ハッシュ値:(1.0.0.1)
3953a54a0befd7bf1ccbaedf6a5f740432ab656b440942c68fac77b8f37f4917
CMD_MinRun.zip(1.0.0.1)
コメント(降順)