ЭКРАНИРОВАНИЕ СПЕЦСИМВОЛОВ.


Символ "^" используется для экранирования специальных символов, которые по синтаксису несут особую нагрузку. Например, 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


Экранирование символа %

Символ % при выводе должен дублироваться.


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 находится внутри скобок.

-------------------------------------------------------------------------------------------------------

Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).






  TopList Rambler Top100 my counter Valid XHTML 1.0 Strict Valid CSS Rambler Top100

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка link О авторе

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка Ссылки О авторе Отправить сообщение Карта сайта Поиск по сайту Главная страница

Copyright © 1999 - 2017  Бронислав Краснер