回答:
あなたがする必要があるのは、次のようにパスワードを二重引用符で囲むことです:
set pwd="abc&123"
echo %pwd%
どうなるか教えてください。
set "pwd=abc&123"
私は、マルティノーの回答とmastashake57の回答の両方を組み合わせると最も効果的に機能することを発見しました。
set pwd=abc^&123
echo %pwd%
それでも失敗し、
set pwd="abc&123"
echo %pwd%
これに引用符を追加します(forアンパサンドのおかげで再び失敗するため、ループまたは文字列操作で引用符を削除することはできません)。これはそれほど素晴らしいことではありません。
しかしながら、
set "pwd=abc^&123"
echo %pwd%
完璧に動作します。
お役に立てば幸いです。
pwdれabc^&123ます。ほとんどの場合、これはおそらくまさにあなたがする必要があることですが、何が起こっているのかを知らなければ、それがあなたを捕まえるかもしれません。
/?包括的なドキュメントではなく概要のみを提供します。
コマンドラインリファレンスヘルプファイルから:
アンパサンド(&)、パイプ(|)、および括弧()は、引数として渡すときにエスケープ文字(^)または引用符の前に置く必要がある特殊文字です。
処理が必要な文字が3文字以上ある場合、パスワード全体を引用符で囲む方が、個々の文字をエスケープするよりも簡単なようです。
あなたが本当に必要なのは:
set pwd=abc^^^&123
echo %pwd%
または:
set "pwd=abc^&123"
echo %pwd%
&は特別な文字なので、でエスケープする必要があり^、結果はになり^&ます。
実行set pwd=abc^&123すると、変数に値が設定されますabc&123。その後、実行echo %pwd%した場合、効果的に実行されecho abc&123ます。
まだ特殊文字なecho abc&123ので、期待どおりに動作しません&。引用符を追加することでこれを回避できecho "abc&123"ますが、出力には引用符文字も含まれます。つまり、引用符を使用することは、適切な解決策とは言えません。
コマンド&を実行するときにchar をエスケープする必要がありますecho。
echo abc^&123
したがって、変数には値を含める必要がありますabc^&123。変数を値に設定するにはabc^&123、特殊文字の^とをエスケープする必要があるため、次のようになります&。
set pwd=abc^^^&123