Windowsバッチで独自のパラメータを設定するサンプル

Windowsバッチ(*.bat)で、引数を自分で設定する方法を検証してみたので、ここにメモしておきます。

イメージとしてはLinuxコマンドのオプションようなことができないかあれこれ考えてみました。

Windowsバッチの引数はハイフンで区切って文字列を渡すだけのシンプルなものなので、引数自体に意味合いを持たせることができません。

「ls -lsa」とか「df -ha」みたいに細かいパラメータを引数として渡すサンプルをWindowsバッチでも作ってみます。

 

 

ffmpegのオプションをWindowsバッチから渡す

検証するにあたり、参考として動画圧縮ツールの「ffmpeg」のオプションをWindowsバッチ実行時に指定する体で作成します。

ffmpegには多くのオプションがありますが、以下のオプションに絞ってみました。

  • -i: ファイル名指定
  • -vcode: コーディック
  • -s: サイズ指定
  • -r: フレームレート指定
  • -pass: 出力先指定

 

サンプルソース

@echo off

rem ---------------------
rem  メイン処理
rem ---------------------
set argumentsI=
set argumentsVC=-vcodec libx264
set argumentsS=-s 1920x1080
set argumentsR=-r 60
set argumentsP=

for /f "usebackq tokens=1-5 delims= " %%a in (`echo %*`) do (
  call :argument %%a
  call :argument %%b
  call :argument %%c
  call :argument %%d
  call :argument %%e
)

rem ffmpegの実行(ドライラン、今回はとりあえず文字列を出力するだけ)
set commond=ffmpeg %argumentsI% %argumentsVC% %argumentsS% %argumentsR% %argumentsP%
echo %commond% output1.mp4
echo %commond% output2.mp4
echo %commond% output3.mp4

exit /b


rem ---------------------
rem  サブルーチン(引数制御)
rem ---------------------
:argument
if ""%1"" == """" (
  exit /b
)

for /f "usebackq tokens=1,2 delims=~" %%x in (`echo %1`) do (
  rem ファイル名指定のパラメータ判定
  if ""%%x"" == ""I"" (
    set argumentsI=-i %%y
  )
  rem コーディックのパラメータ判定
  if ""%%x"" == ""VC"" (
    set argumentsS=-vcode %%y
  )
  rem サイズ指定のパラメータ判定
  if ""%%x"" == ""S"" (
    set argumentsS=-s %%y
  )
  rem フレームレートのパラメータ判定
  if ""%%x"" == ""R"" (
    set argumentsR=-r %%y
  )
  rem パスのパラメータ判定
  if ""%%x"" == ""P"" (
    set argumentsP=-pass %%y
  )
)

rem sub終了
exit /b

パラメータは以下のように指定します

 I~値: 圧縮対象のファイルを指定
 VC~値:コーディックを指定(デフォルト:libx264)
 S~値: サイズ指定(デフォルト:1980×1080)
 R~値: フレームレートを指定(デフォルト:60)
 P~値: 出力先を指定

 

検証

パラメータをしてしない場合はデフォルト値が入る

c:\sample\bat\arguments>sample3-1.bat
ffmpeg  -vcodec libx264 -s 1920x1080 -r 60  output1.mp4
ffmpeg  -vcodec libx264 -s 1920x1080 -r 60  output2.mp4
ffmpeg  -vcodec libx264 -s 1920x1080 -r 60  output3.mp4

サイズ、フレームレートを指定してみる

c:\sample\bat\arguments>sample3-1.bat R~120  S~340×640
ffmpeg -vcodec libx264 -s 340×640 -r 120  output1.mp4
ffmpeg -vcodec libx264 -s 340×640 -r 120  output2.mp4
ffmpeg -vcodec libx264 -s 340×640 -r 120  output3.mp4

全てのパラメータをを指定してみる

c:\sample\bat\arguments>sample3-1.bat S~360×240 R~120 P~D:\backup\ VC~libx265 I~sample1.mp4
ffmpeg -i sample1.mp4 -vcodec libx264 -vcode libx265 -r 120 -pass D:\backup\ output1.mp4
ffmpeg -i sample1.mp4 -vcodec libx264 -vcode libx265 -r 120 -pass D:\backup\ output2.mp4
ffmpeg -i sample1.mp4 -vcodec libx264 -vcode libx265 -r 120 -pass D:\backup\ output3.mp4

 

 

正直、Windowsバッチ自体にもっと便利なやり方があるかもしれないけど、取り敢えず無理くりにでも作れた。



投稿日:2020-07-21    更新日:2020-07-21

[スポンサーリンク]

サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]