【バッチファイル】バッチファイルを作って実行する

あまりにもバッチファイルの知識が薄かったので入門してみました。

バッチ?シェル?

まずそもそもバッチファイルとは?シェルスクリプトとは?という話です。

バッチファイルもシェルスクリプトコマンドラインの処理をまとめて記述したファイルです。
シェルスクリプトMacとかで使い、Windowsでは主にバッチファイルを使うようです。

qiita.com

とりあえず作って実行する

何はともあれとりあえずバッチファイルを作って実行してみます。
まずテキストエディタで下記を入力します。

rem コメントは"rem コメント内容"と書く
echo テスト

rem 勝手に閉じないようにpause
pause

これを.batという拡張子で保存します。
するとこんなアイコンのファイルができます。

f:id:halya_11:20190109122224p:plain

これをダブルクリックすることで実行できます。
結果はこのように表示されます。

テスト

引数を渡す&コマンドラインから実行

バッチファイルで引数を受け取るには%[数字]と書きます。

rem %[数字]で引数を受け取る
rem [数字]は1~なので注意
echo テスト - %1

pause

これを実行しますが、前節のダブルクリックによる実行では引数は渡せません。
そのためコマンドラインから実行します。

コマンドプロンプトを起動し、下記のような感じで入力します。パスは適当です。

C:\Users\Example>C:\Users\Example\Desktop\test.bat 引数だよ

すると次のような結果が得られます。

テスト - 引数だよ

このように、ファイル名の後にスペースと引数を入力することで引数を渡せます。

ちなみに受け渡せる引数は9個までです。
10個以上の引数を渡す方法もありますがあまり使わなそうなのでここでは割愛します。

ファイルを渡して実行

バッチファイルに他の何かしらのファイルをドラッグ&ドロップすると、
渡したファイルの絶対パスが引数となります。

前節のバッチファイルを使うと次のような結果になります。

テスト - C:\Users\Example\Desktop\test.unitypackage

ちなみに複数のファイルを一度にドラッグ&ドロップすれば受け渡すことも可能です。

引数の区切り文字

複数の引数を渡すとき、引数の区切り文字は半角スペース以外にも「,」「=」「;」が使えます。

C:\Users\Example>C:\Users\Example\Desktop\test.bat 引数1,引数2

ただこれだと「引数1,引数2」という文字列を一つの引数として渡せません。
そういう時にはまず「"」で引数を囲みます。

C:\Users\Example>C:\Users\Example\Desktop\test.bat "引数1,引数2"

そして使う側は%1ではなく%~1を使います。
これは「"」を削除するという意味のようです。

rem %~1とすることでダブルクォーテーションを削除
echo テスト - %~1

pause

参考

qiita.com

jj-blues.com

jj-blues.com