自分自身を最小化したり隠したりするWindowsバッチファイル

2024年4月24日

バッチファイルを2つ作れば対応できますが管理するのが大変なので一つのバッチファイルで方法を調べました

最小化するバッチファイル

使用したいバッチファイルの先頭に次の行を記述します

@if not "%~0"=="%~dp0.\%~nx0" start /min cmd /c,"%~dp0.\%~nx0" %* & goto :eof

バッチファイルが C:\test.bat だったとすると %~0 は C:\test.bat になり、%~dp0.\%~nx0 は C:\.\test.bat になります。その値が違うため1回目は自分自身を最小化して起動して終了します。2回目は%~0 は C:\.\test.bat になり値が同じくなるので2行目以降を実行します。

  • フォルダパス … “%~dp0”
  • ファイル名+拡張子 … “%~nx0”
  • 最小化して引数を指定してコマンドプロンプトを起動 start /min cmd /c,"%~dp0.\%~nx0″ %*

別な書き方

if not "%~0"=="%~dp0.\%~nx0" start /min cmd /c;"%~dp0.\%~nx0" %* && exit
 if not "%~0"=="%~dp0.\%~nx0" powershell -NoProfile -WindowStyle  minimized -Command  "cmd /c,%~dp0.\%~nx0 %*" & goto :eof
if not "%~0"=="%~dp0.\%~nx0" powershell  -NoProfile  start-process cmd -ArgumentList '/c,%~dp0.\%~nx0 %*' -WindowStyle  minimized & goto :eof

使用例

@if not "%~0"=="%~dp0.\%~nx0" start /min cmd /c,"%~dp0.\%~nx0" %* & goto :eof
rem 以下に実行したいコマンドを記述。
echo "%~0" "%~dp0.\%~nx0" 
timeout /t 5

バッチファイルを最小化して実行する方法
コマンドプロンプトのウィンドウを最小化して実行する方法

非表示にしたり隠したりするバッチファイル

使用したいバッチファイルの先頭に次の行を記述します

if not "%~0"=="%~dp0.\%~nx0" powershell  -NoProfile  start-process cmd -ArgumentList '/c,%~dp0.\%~nx0 %*' -WindowStyle  hidden & goto :eof

WindowStyleを変更すれば次の状態にすることができます

Normal
Hidden
Minimized
Maximized

bat,windows

Posted by eightban