2

Я хочу скопировать пароль в буфер обмена, используя файл bat. Я попробовал несколько предложений, таких как

echo|set /p=Ps5dP%q$@mxnx|clip

Но проблема в том, что он не копирует знак% в буфер обмена. Вышеописанный скрипт работает, но без знака%.

Какие-либо предложения ?

2 ответа2

1

Он не копирует знак% в буфер обмена

Из командной строки

F:\test>echo|set /p=Ps5dP%q$@mxnx|clip

F:\test>Ps5dP%q$@mxnx

Команда работает как положено.


Из командного файла

Команда не работает должным образом. Вы можете видеть, что echo в командном файле упало % .

F:\test>type test.cmd 
echo|set /p=Ps5dP%q$@mxnx|clip

F:\test>test

F:\test>echo | set /p=Ps5dPq$@mxnx  | clip

F:\test>Ps5dPq$@mxnx

Решение для пакетного файла

Escape % (заменить % на %%)

F:\test>type test.cmd
echo|set /p=Ps5dP%%q$@mxnx|clip

F:\test>test

F:\test>echo | set /p=Ps5dP%q$@mxnx  | clip

F:\test>Ps5dP%q$@mxnx

Почему мне нужно экранировать символ%?

Уходящие проценты

Символ % имеет особое значение для параметров командной строки и параметров FOR .

Чтобы рассматривать процент как обычный символ, удвойте его:

%%

Синтаксис источника : Escape-символы, разделители и кавычки


Дальнейшее чтение

0

попробуй это

echo|set /p=Ps5dP%%q$@mxnx|clip

% Ускользает от %

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