バッチファイルのサンプルコードを読んでいると、コマンドライン引数の書き方について、引数1を扱う際に以下の2種類が存在することに気が付きます。
- %1
- %~1
本記事では、コマンドライン引数を扱う%1と%~1の違いについて紹介します。
%1と%~1の違い
%1はバッチファイルに渡された最初の引数をそのままの形で参照します。引数がダブルクォートで囲まれている場合、%1を使うとそのダブルクォートも含めて引数を参照します。
一方で、%~1は、最初の引数を参照しますが、引数を囲むダブルクォートを除去して参照します。引数がダブルクォートで囲まれていた場合に、それを取り除いた状態で引数を扱いたいときに便利です。
サンプルコード
以下のバッチファイルを作成し、動作の違いを実際に確認します。
@echo off
echo %1
echo %~1
実行結果
> sample.bat "C:\Program Files (x86)"
"C:\Program Files (x86)"
C:\Program Files (x86)
最初のecho %1では、引数がダブルクォートで囲まれた状態で出力されますが、二番目のecho %~1では、ダブルクォートが除去されて出力されることがわかります。
まとめ
本記事では、バッチファイルのコマンドライン引数の%1と%~1の違いを紹介しました。引数を扱うバッチファイルの作成において、お役立てください。