私は次のようなことを試みています:
set pwd = abc&123
echo password %pwd%
結果は...
'123' is not recognized as an internal or external command, operable program or batch file.
password abc
システムはこのようなものですか、またはそのようなキャラクターの脱出はありますか?
あなたがする必要があるのは、次のようにパスワードを二重引用符で囲むことです:
set pwd="abc&123"
echo %pwd%
どうなるか教えてください。
私はそれがマルティノーの答えとmastashake57の答えの両方の組み合わせで最もよく機能することを発見しました。
set pwd=abc^&123
echo %pwd%
それでも失敗し、
set pwd="abc&123"
echo %pwd%
引用符を追加します(for
ループまたは文字列操作では、アンパサンドのおかげで再び失敗するため、引用符を削除できません)。これはそれほど素晴らしいことではありません。
しかしながら、
set "pwd=abc^&123"
echo %pwd%
完璧に動作します。
お役に立てば幸いです。
コマンドラインリファレンスヘルプファイルから:
アンパーサンド(&)、パイプ(|)、および括弧()は、引数として渡すときにエスケープ文字(^)または引用符の前に置く必要がある特殊文字です。
処理が必要な文字が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"
出力には引用符文字も含まれます。つまり、引用符を使用することは、適切な解決策とは言えません。
echo
コマンドを実行するときに&
文字をエスケープする必要があります。
echo abc^&123
したがって、変数には値abc^&123
を含める必要があります。変数を値abc^&123
に設定するには、特殊文字^
および&
をエスケープする必要があります。その結果、次のようになります。
set pwd=abc^^^&123