LoginSignup
1
1

More than 1 year has passed since last update.

バッチファイルのダブルクォート地獄を回避する方法

Last updated at Posted at 2021-12-22

バッチファイル(BATファイル)の実行時引数にスペースを含む場合、その引数をダブルクォートで囲む必要がある。
一方、実行されたバッチファイル内で別途実行するコマンドに受け取った引数を渡す場合、同様にダブルクォートで囲む必要がある。
しかし、以下のように単純にダブルクォートで囲むと、望み通りではない結果となる。

a.bat
@call b.bat "Hi %1, How are you?"
b.bat
@echo %1

上記a.batを実行すると、以下のようになる。

> a.bat "Hoge Fuge"
"Hi "Hoge

解決策

以下のように、引数をフィルタリング(?)することで上記問題を解決できる。

a2.bat
@call b2.bat "Hi %~1, How are you?"
b2.bat
@echo %~1

上記a2.batを実行すると、望み通りの結果となる。

> a2.bat "Fuge Hoge"
Hi Fuge Hoge, How are you?

自分は長年知らずに困ることがあったので、同様に困っている方に共有したいと思い、本記事を掲載することにした。

1
1
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
1
1