◇実行方法を判別する
エクスプローラーまたはコマンドプロンプトからの起動を判別できると色々と応用が利きます。
開始時にウインドウタイトルを変更と終了処理の分岐のサンプルを掲載します。
2022/08/17
終了処理を最近、使っているものに書き換えました。
実行がエクスプローラーからかコマンドラインか判別するサンプル
EndProcessBranchStartupConditions.bat
@echo off
:: 遅延展開宣言 バグの原因になる場合があります;
setlocal enabledelayedexpansion
:: %ESC%でエスケープシーケンスを利用できるようにする;
for /f "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (set ESC=%%b)
:: エクスプローラーから起動されていた場合はタイトル宣言;
echo %cmdcmdline%|find /i "%~f0">NUL
if %ERRORLEVEL% equ 0 (title %~n0 %DATE% - %TIME%)
echo 起動テスト中
:: 終了処理を起動条件により分岐(エクスプローラーから起動されていた場合は選択処理);
:EndProcess
echo %CMDCMDLINE%|find /i "%~f0">NUL
if "%ERRORLEVEL%" neq "0" (goto :eof)
choice /t 10 /c qa /d q /m "10秒待機します。即閉じる場合はQ、待機はAを押してください。"
if "%ERRORLEVEL%" equ "2" (
echo %ESC%[1A%ESC%[2K%ESC%[1A
pause
)
goto :eof
待機方法について
以下のようなすると待機時間やメッセージを変更、表示できます。
待機方法 | コマンド |
---|---|
キーが押されるまで待機します | Pause |
指定秒数待機します | timeout /t 5 /nobreak |
様々な形式で処理をできます ※サンプルを参考 |
choice /t 10 /c qa /d q /m "10秒待機します。即閉じる場合はQ、待機はAを押してください。" |
コマンドプロンプト状態で終了します | cmd /k |
タイトルに開始時刻を入れる
◇日時を好みのフォーマットで作成」を使って開始時間を入れても良いですね。
メッセージウインドウやトーストを使うのもおすすめです。
◇Windowsのバッチファイルでメッセージウインドウを表示
◇Windowsのバッチファイルでトーストを使って通知する
おわりに
他にも「⧉Windowsのバッチファイルのテクニックをご紹介します」にてご紹介させて頂いております。
お時間ありましたら覗いてみてください
お粗末様でした。