batch-file
Удаление специальных символов
Поиск…
Вступление
Во всех версиях cmd.exe
и DOS
некоторые символы зарезервированы для конкретного использования (например, перенаправление команды). В этом разделе рассказывается о том, как использовать специальные символы без проблем.
Побег с использованием каретки (^)
Большинство специальных символов могут быть экранированы с помощью каретки ( ^
). Взгляните на следующий пример.
echo > Hi
echo ^> Hi
Эта первая команда не выводит > Hi
потому что >
является специальным символом, что означает перенаправление вывода в файл. В этом случае файл называется «Привет»,
Однако во второй команде > Hi
выводится без каких-либо проблем, потому что функция caret ( ^
) сообщает >
перестать функционировать как команда «перенаправить вывод в файл», теперь >
является обычным символом.
Вот список специальных символов, которые могут быть экранированы (сняты и отредактированы на странице Роб ван дер Вуде)
символ | Сбежавший результат | замечания |
---|---|---|
^ | ^^ | |
& | ^ & | |
< | ^ < | |
> | ^> | |
| | ^ | | |
\ | ^ \ | |
! | ^^! | Требуется только, когда DelayedExpansion включен |
Выход из каретки
Уход может быть уложен в стопку с помощью других кареток, рассмотрим следующий пример.
вход | Выход |
---|---|
^ & | & |
^ ^ ^ & | ^ & |
^ ^ ^ ^ ^ | ^^ & |
Примечание. Масштабирование, выделенное полужирным шрифтом, исчезает.
Проблема безопасности
Здесь немного, но это очень важно! Нежелательный уход в конце файла может привести к утечке памяти!
any-invalid-command-you-like-here ^
Эта команда будет утечка всей памяти, что сделает систему полностью непригодной для использования ! См. Здесь для получения дополнительной информации.
Специальные символы FIND и FINDSTR
В find
и findstr
есть некоторые специальные символы, которые требуют некоторой осторожности.
НАХОДИТЬ
Существует только один символ, который нуждается в ускорении - "
цитата». Чтобы избежать этого, просто добавьте еще одну цитату рядом с ней. Таким образом, "
становится ""
. Довольно просто.
FINDSTR
Findstr
приходит с большим количеством символов, чтобы убежать, поэтому, пожалуйста, будьте очень осторожны. Используя \
, мы можем избежать специальных символов. Вот список специальных символов для выхода
символ | Сбежавший результат |
---|---|
\ | \\ |
[ | \ [ |
] | \] |
" | \» |
, | \. |
* | \ * |
? | \? |
Специальные символы FOR / F
FOR / F
В инструкции FOR /F
некоторым символам требуется экранирование, вот список (снятый и отредактированный на странице Роб ван дер Вуде)
символ | Сбежавший результат | замечания |
---|---|---|
' | ^» | usebackq только в скобках FOR /F , если не указано значение usebackq . |
` | ^ ` | usebackq только в скобках FOR /F , когда указано использование usebackq |
, | ^, | ┒ |
; | ^; | ┃ |
знак равно | ^ = | ┣ Должен быть экранирован в скобках FOR /F , даже если он имеет двойные кавычки |
( | ^ ( | ┃ |
) | ^) | ┙ |
Дополнительные специальные символы
Вот список других специальных символов, которые требуют (ы) / могут нуждаться в экранировании, но не упомянуты выше.
символ | Сбежавший результат | замечания |
---|---|---|
% | %% | |
[LF] | ^ [LF] | Этот трюк был отмечен Марк alt.msdos.batch группе новостей alt.msdos.batch . |
Выход из трубопровода
Когда есть выражение с трубой, cmd
запускает два потока по обеим сторонам трубы, и выражение анализируется дважды (для каждой стороны трубы), поэтому необходимо укоротить уход.
С левой стороны:
echo ^^^&|more
На правой стороне:
break|echo ^^^&