【Windows】「続行するには何かキーを押してください . . .」で終わる bat ファイルを別の bat ファイルから呼び出して連続実行する方法

  • 2023年3月6日
  • 2023年11月23日
  • Windows

 bat ファイルはバッチファイルともいい Windows のコマンドラインで実行できるコマンドを順次実行でき、ループ、条件分岐の様なフローを書ける簡易なシェルスクリプトです。これのリファレンスは次リンクです。

Windows のコマンド | Microsoft Learn

 bat ファイルに似た立ち位置に PowerShell で実行できる ps1 ファイル(PowerShell スクリプトファイル)があります。こちらの方がより多機能かつ堅牢ですが Windows 上からダブルクリックで何か他のプログラムを動かすだけでしたら bat ファイルで十分です。batファイルのその様な用例として内部が複雑なプログラムを触らずに引数やオプションだけ bat ファイル上で指定しておく形があります。次がそれです。

rem 元動画
set input_video="hoge.mp4"

rem 元動画に組み合わせる音声ファイル
set input_audio="fuga.wav"

rem 出力先
set output_video="piyo.mp4"

rem ffmpeg に動画と音声を合成してもらう
ffmpeg -i %input_video% ^
             -i %input_audio% ^
             %output_video%

 この様にしておくとコマンドラインのヘルプとにらめっこすることが少なくなり、同じ引数やオプションを再度打ち込む必要がなくなります。

 ダブルクリックで起動したbatファイルは実行完了するとウィンドウを閉じます。しかしながら実行完了後に何が起きていたか確認したい時は少なくありません。こういった時は pause を使って目的の部分の実行が完了しても bat ファイル自体を終わらせない方法が取られやすいです。これは例えば次です。

rem 元動画
set input_video="hoge.mp4"

rem 元動画に組み合わせる音声ファイル
set input_audio="fuga.wav"

rem 出力先
set output_video="piyo.mp4"

rem ffmpeg に動画と音声を合成してもらう
ffmpeg -i %input_video% ^
             -i %input_audio% ^
             %output_video%
rem ここで実行を停める。
rem コマンドラインには「続行するには何かキーを押してください . . .」と表示される
pause

 こうしておくとコマンド実行後放置しても実行中のログを逃すことがありません。

 pause は便利なのですが、bat ファイルから bat ファイルを呼び出して連続実行する際に不便になる機能でもあります。というのも呼び出し先の bat ファイルの pause が走った瞬間にコマンドライン全体が一時停止し、次に実行したい処理に進めなくなってしまうためです。これを対処するには次の様にする方法があります。

rem call は bat ファイルから bat ファイルを呼び出すためのコマンド
echo|call ffmpeg_alice.bat
echo|call ffmpeg_bob.bat

rem 呼び出し元の親 bat ファイルの終わりに pause で実行内容を確認
pause

 echo とパイプで空の標準入力を bat ファイルに渡し、何かしらのキーを押した相応のことをします。これで元々の pause は実質無効化され次の処理に移れます。

 このようにして bat ファイルの呼び出しを制御する bat ファイルを書くとより楽に様々なことができます。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG