Он не копирует знак% в буфер обмена
Из командной строки
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-символы, разделители и кавычки
Дальнейшее чтение