Экранирование спецсимволов.
Символ "^" используется для экранирования специальных символов, которые по синтаксису несут особую нагрузку. Например, echo ^<html^>
Пример:
echo ^<html^> >mytest.html
echo ^<head^> >>mytest.html
echo ^<title^>Test html page^</title^> >>tmytest.htm
echo ^</head^> >>mytest.html
echo ^<body^> >>mytest.html
echo Hello World >>mytest.html
echo ^</body^> >>mytest.html
echo ^</html^> >>mytest.html
Или используйте следующую возможность
SET OutFile="%~n0.html"
> %OutFile% ECHO ^<html^>
>> %OutFile% ECHO ^<head^>
>> %OutFile% ECHO ^<title^>best page^</title^>
>> %OutFile% ECHO ^</head^>
>> %OutFile% ECHO ^<body^>
>> %OutFile% ECHO Hello World
>> %OutFile% ECHO ^</body^>
>> %OutFile% ECHO ^</html^>
Экранирование символа %
Символ % при выводе должен дублироваться.
echo моих собственных примеров здесь более 10%%
Если используется команда CALL для вызова другой команды, например SET, то в некоторых случаях символ % (наружный) так же дублируется.
Call Set d=%%str:~%n1%,%n2%%%
Подробнее об этом можно ознакомиться на странице Особенности процедур
Параметры подпрограмм.
Амперсанд &, вертикальная черта | и скобки () являются специальными символами, Если эти символы передаются в качестве аргументов, то им должен предшествовать управляющий символ ^ или значение параметра должно быть заключено в кавычки.Экранирование спецсимволов в операторе FOR
При разборе сложных конструкций, если в выражении, стоящем в части IN оператора FOR присутствуют спецсимволы, их необходимо экранировать.
for /f "tokens=9 delims= " %%I ^
in ( '^(ECHO D FFFF:0005 L 8 ^& ECHO Q ^) ^| DEBUG ^| FIND "/"' ) ^
do ( set DTBIOS2=%%I )
echo BIOS date: %DTBIOS2%
Использование круглых скобок
Старайтесь избегать использования круглых скобок в операторе echo. Это связано с тем, что если сам оператор echo находится внутри круглых скобок (составной оператор, например, IF, ELSE, FOR), то синтаксический анализатор может неправильно понять вашу программу и ошибку такого рода будет не так просто найти.Если душа художника требует использования именно круглых скобок - экранируйте их.
echo Ошибка при вызове подпрограммы ^( не определен параметр ^)
Это же замечание справедливо и для оператора set /p
set /P TODECR=Decrypt input file ? ^( Y or N ^)
Более того, как вы думаете, какой результат даст следующая программа ?
@echo off
SetLocal EnableDelayedExpansion
for /L %%I in (1,-1,0) do (
set /a BB = (%%I+3)/2
echo !BB!
)
Как вы уже догадались, разбор скобок происходит неверно. Будет получено сообщение об ошибке:
Непредвиденное появление: /2
Для правильного разбора оператора set скобки надо экранировать.
set /a BB = ^(%%I+3^)/2
Следует отметить, что в самом операторе set /a можно использовать вложенные скобки, например:
set /a BB=(2+(3+2)*2)*3
Обязательно экранировать скобки необходимо в том случае, если сам оператор SET находится внутри скобок.
-------------------------------------------------------------------------------------------------------
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).