多くの場合、スペース、引用符、パーセント、スラッシュ、およびそれらのあらゆる種類の組み合わせを使用して、バッチ ファイルの引数を渡すことに対処してきました。通常、私は自分が望むものを達成する方法を理解することができましたが、今回は立ち往生しています。私は今、数百の組み合わせを試しましたが、頭が痛くなり始めています.
私はこの問題をかなり単純な要件に減らしました。1 つのバッチ ファイルから別のバッチ ファイルに渡すことです。これは、スペースで区切られたテキストを含む引数であり、そのうちの 1 つは引用符で囲まれたスペースです。つまり、1 つのバッチ ファイルがX
別のバッチ ファイルに何らかの文字列を渡して、2 番目のバッチ ファイルが echo するようにする必要があります"A "B C" D"
。どうあるX
べきかわかりません。
これは、うまくいかないいくつかの試行を示す最小限のバッチ ファイルです。(この BAT ファイルは、それ自体を呼び出すことで両方の代わりになります。)
::Goal is to print:
::"A "B C" D"
::ie., pass from one BAT file to another a quote containing spaces and a quote containing a space
@echo off
if not (%1)==() goto print
:passarg
call %0 "A "B C" D"
call %0 "A \"B C\" D"
%0 "A ""B C"" D"
:print
echo %1
pause
それらの試みはどれもうまくいきません。"\" \""
、""" """
、"""" """"
、"\"" "\""
、""\" \"""
、"^" ^""
などを使ってみまし^"" "^"
た。二重二重引用符を出力するか、スペースの後のすべてを失うか、または何か他のもの (それは間違っています) のいずれかです。
何か案は?ありがとう。