2010-12-01 30 views
5

バッチファイルtest.batがあり、コマンドラインから2つの引数が必要です。引数が引用符で囲まれたバッチファイルを呼び出す

私は

test.bat "C:\work Area\" "Hello politics="Hero Jack"" 

として呼び出すTEST.BAT私は2番目の引数はHello politics="Hero Jack"としてbatファイルによって取られたくいる

Arg1 - "C:\work Area\" 
Arg2 - "Hello politics="Hero Jack"" 

。私はそのようなことが起こるような引数を指定してtest.batを呼び出す方法を知らない。 2番目の引数は"Hello politics="Heroのようになり、Jack"は破棄されます。あなたは私が私が間違って呼び出しています何を知らせることができます。..

答えて

3

を、そうではありません1つのパラメータとして得ることが可能

Arg2 - "Hello politics="Hero Jack"" 

それは、パラメータのトークナイザがキャレットにあまり興味がないからです。 トークナイザのカウントは引用符だけであるようです。

パーサはキャレットを検出し、&>または<
などの特殊文字をエスケープすることができます。しかし%1にラインを分割トークナイザ、%2つのパラメータは、ルールを使用しています。 のような区切り文字。 =は

test.bat """This is one param" 
test.bat ""These are four params" 
test.bat ^"This is also one param" 
test.bat ^^"This is also one param" 

前に引用符の不均等な数がある場合にのみ、抑制することができ、新しいパラメータを開始しかし、あなたはこれが2の「Hello政治%で作成し

test.bat "C:\work Area\" "Hello politics=""Hero Jack"" 

のように、回避策を使用することができます=「」ヒーロージャック「」
その後、あなたは、単一引用符ですべての二重引用符を置き換えることができます。

+0

はい、実際に動作することを、感謝 – Sharma

0

さて、引用符の余分なペアの全体の引数文字列をラップ2.トライ取る:

test.bat ""C:\work Area\" "Hello politics="Hero Jack""" 

が出典:私の意見ではhttp://ss64.com/nt/syntax-esc.html

+0

を動作しませんでしたどちらか:( – Sharma

関連する問題