2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

◇Windowsのバッチファイルで実行方法を判別して処理を分岐させる

Last updated at Posted at 2022-07-23

◇実行方法を判別する

エクスプローラーまたはコマンドプロンプトからの起動を判別できると色々と応用が利きます。
開始時にウインドウタイトルを変更と終了処理の分岐のサンプルを掲載します。

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のバッチファイルでメッセージウインドウを表示
WS000000.jpg
◇Windowsのバッチファイルでトーストを使って通知する
Toast.gif

おわりに

他にも「⧉Windowsのバッチファイルのテクニックをご紹介します」にてご紹介させて頂いております。
お時間ありましたら覗いてみてください
お粗末様でした。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?