5

二重引用符と大なり記号を任意のコマンドに渡すには、いくつかの方法があり'"'ます"\""">"

しかし、それらを一緒に渡そうとすると

C:\>echo "\">"
The system cannot find the path specified.

と同じ"\"\>"。一重引用符を使用して動作させることもできますが、すでに引用符を扱う作業が非常に多いため、すべてを二重引用符で囲みます。

それを逃れる方法はありますか?

私はwindows7を使用していますが、これは下位互換性の「機能」であると信じているため、この情報が関連しているかどうかはわかりません.

編集1:

エンドロが正解だと思ったのに…でも、そう簡単にはいかない。文字列にエスケープされた二重引用符があるかどうかによって、 CMD^>の扱いが異なります。誰もが理由を知っていますか?! または別のエスケープ方法ですか?

C:\>sh echo "\"^>"
">

C:\>sh echo "a^>"
a^>

C:\>echo "\"^>"
"\">"

C:\>echo "a^>"
"a^>"

^編集2:文字列を囲む引用符の前に使用して、Monacraftが提案したテストケースを次に示します

C:\>echo ^"a/>"
The system cannot find the path specified.
(we still need to escape that > symbol)

C:\>echo ^"a/^>"
"a/>"
(work fine without \" in the string)

C:\>echo ^"\"/^>"
"\"/^>"
(add a single \" and the ^> escaping stop to works)

C:\>echo ^""/^>"
""/^>"
(ok, using ^ before the string means i dont have to escape the " anymore)

C:\>echo ^"^\"/^>"
"\"/^>"
(but what if i have an actual \" in my input that i have to escape... would ^\ prevent this from happening? nope)
4

1 に答える 1

3

完全な説明はできませんが、二重引用符の前にエスケープ文字を入れると機能します:

C:\>echo "a^>"
"a^>"

C:\>echo ^"a^>"
"a>"

文字列の前に a を置くことで、文字列内の a を実際の文字列の一部として^扱わないように cmd に指示していると思います。^というわけで:

C:\>echo "text^>" ^"text^>"
"text^>" "text>"

そうします。ただし、完全な説明はできませんが、少なくとも問題は解決します。

編集2:

わかりました、編集 2 については、文字列内で何もエスケープする必要はありません。

C:\>echo ^"\"/>"
"\"/>"

また、 a をエスケープするため\に必要なのは\\. 詳細については、ここをクリックしてください。単純"に引用符 ( "") を二重にします。

于 2013-08-28T23:12:57.940 に答える