2014.
03.
18
07:15:16
結論から書きますね。
理屈としては
でコマンドプロンプトのウインドウを最小化した状態で起動できるので
「バッチファイルを最小化した状態で起動するバッチファイル」を別に用意すればOKです。
更に「バッチファイルを最小化した状態で起動するバッチファイル」を自バッチファイルに組み込んで
自バッチファイルを再帰的に呼び出すようにすれば、1つのバッチファイルでも実現可能です。
それでは順番に見ていきましょう。
まずはバッチファイルを2つ使うバージョンですが、例えばこんなんφ(--)
■C:\test.bat
■C:\test2.bat
「test.bat」から同じフォルダにある「test2.bat」を最小化した状態で起動しています。
「%~dp0」はtest.batのパスで「%*」はtest.batに渡されたパラメータ全部ね。
最小化して起動したいってことはバッチファイルを直接ダブルクリックで起動するつもりだと思うので
パラメータの受け取りはいらない気もしますが、一応付けておきました。
バッチファイルを2つも作りたくない人は自分を再帰的に呼び出しましょう、らしいです。
例えばこんなコードにしろですってさφ(--)
■C:\test3.bat
まず最初に起動されるのが「C:\test3.bat」ですが、
その中で「C:\.\test3.bat」を最小化して起動する、と。
自分のパスが「C:\.\test3.bat」のときは子画面だからスルーする、ってな理屈のようです。
つまり、こーゆーことですねφ(--)
なるほど(--)
個人的にはパスを書き換えて判定ってのが好みでは無かったので、
環境変数を使うように変更してみましたφ(--)
■C:\test4.bat
一発目の呼び出し時に適当な環境変数(例では「HOGE」)に適当な値(例では「hoge」)を入れて
値が未設定であれば一発目、設定済みであれば再帰的に呼び出されたものと判断しています。
細かい理屈は省略しますが、親バッチの環境変数が子バッチに受け渡される性質を利用していますよ。
個人的にはこっちの方が好みです。
と言うわけで、バッチファイルを最小化した状態で起動するの、完了\(--)/
理屈としては
start /MIN ほげほげ
でコマンドプロンプトのウインドウを最小化した状態で起動できるので
「バッチファイルを最小化した状態で起動するバッチファイル」を別に用意すればOKです。
更に「バッチファイルを最小化した状態で起動するバッチファイル」を自バッチファイルに組み込んで
自バッチファイルを再帰的に呼び出すようにすれば、1つのバッチファイルでも実現可能です。
それでは順番に見ていきましょう。
まずはバッチファイルを2つ使うバージョンですが、例えばこんなんφ(--)
■C:\test.bat
@echo off
start /MIN %~dp0test2.bat %*
start /MIN %~dp0test2.bat %*
■C:\test2.bat
@echo off
echo "test"
echo %*
pause
exit
echo "test"
echo %*
pause
exit
「test.bat」から同じフォルダにある「test2.bat」を最小化した状態で起動しています。
「%~dp0」はtest.batのパスで「%*」はtest.batに渡されたパラメータ全部ね。
最小化して起動したいってことはバッチファイルを直接ダブルクリックで起動するつもりだと思うので
パラメータの受け取りはいらない気もしますが、一応付けておきました。
バッチファイルを2つも作りたくない人は自分を再帰的に呼び出しましょう、らしいです。
例えばこんなコードにしろですってさφ(--)
■C:\test3.bat
@echo off
if not "%~0"=="%~dp0.\%~nx0" (
start /min cmd /c,"%~dp0.\%~nx0" %*
exit
)
echo "test"
echo %*
pause
if not "%~0"=="%~dp0.\%~nx0" (
start /min cmd /c,"%~dp0.\%~nx0" %*
exit
)
echo "test"
echo %*
pause
まず最初に起動されるのが「C:\test3.bat」ですが、
その中で「C:\.\test3.bat」を最小化して起動する、と。
自分のパスが「C:\.\test3.bat」のときは子画面だからスルーする、ってな理屈のようです。
つまり、こーゆーことですねφ(--)
if not "%~0"=="C:\.\test3.bat" (
start /min cmd /c,"C:\.\test3.bat" %*
exit
)
start /min cmd /c,"C:\.\test3.bat" %*
exit
)
なるほど(--)
個人的にはパスを書き換えて判定ってのが好みでは無かったので、
環境変数を使うように変更してみましたφ(--)
■C:\test4.bat
@echo off
if not "%HOGE%"=="hoge" (
set HOGE=hoge
start /min cmd /c,"%~0" %*
exit
)
echo "test"
echo %*
pause
if not "%HOGE%"=="hoge" (
set HOGE=hoge
start /min cmd /c,"%~0" %*
exit
)
echo "test"
echo %*
pause
一発目の呼び出し時に適当な環境変数(例では「HOGE」)に適当な値(例では「hoge」)を入れて
値が未設定であれば一発目、設定済みであれば再帰的に呼び出されたものと判断しています。
細かい理屈は省略しますが、親バッチの環境変数が子バッチに受け渡される性質を利用していますよ。
個人的にはこっちの方が好みです。
と言うわけで、バッチファイルを最小化した状態で起動するの、完了\(--)/