9

Я пытаюсь что-то вроде:

set pwd = abc&123
echo password %pwd%

Я получаю результат как ...

'123' is not recognized as an internal or external command, operable program or batch file. 
password abc

Система такая или есть спасение для таких персонажей?

4 ответа4

7

Что вам нужно сделать, это заключить пароль в двойные кавычки, например, так:

set pwd="abc&123"
echo %pwd%

Дайте мне знать, как это происходит.

5

Я обнаружил, что это лучше всего работает с комбинацией ответа Мартино и ответа mastashake57.

set pwd=abc^&123
echo %pwd%

По-прежнему не удается, и

set pwd="abc&123"
echo %pwd%

Добавляет к нему кавычки (вы не можете удалить кавычки с помощью цикла for или манипуляции со строками, потому что он снова потерпит неудачу, благодаря амперсанду), что не так уж и здорово.

Тем не мение,

set "pwd=abc^&123"
echo %pwd%

Работает отлично.

Надеюсь, это поможет.

5

Из справочного файла справки командной строки:

Амперсанд (&), pipe (|) и круглые скобки () являются специальными символами, которым должны предшествовать escape-символ (^) или кавычки при передаче их в качестве аргументов.

Похоже, что вводить весь пароль в кавычки было бы проще, чем экранировать отдельные символы, если в нем более двух символов, требующих обработки.

1

Что вам действительно нужно:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .