У меня есть следующая строка:
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET /A countArgs=1
...
SET /A countArgs+=1
CALL :error "!countArgs!. Argument ^-^> bla"
EXIT /B 1
...
:error
ECHO ERROR
ECHO %~1
EXIT /B 0
Но строка 2. ECHO
в процедуре :error
echo
s ничего.Когда я уменьшаю строку аргумента CALL
до "!countArgs!. Argument ^-^>"
, я получаю синтаксическую ошибку, а когда я уменьшаю ее до "!countArgs!. Argument ^-"
или даже "!countArgs!. Argument -"
, она работает правильно.
Согласно этой записи символ должен быть экранирован при добавлении ^
, если он находится внутри кавычек, что имеет смысл, поскольку при использовании строки в качестве параметра в подпрограмме :error
~
удаляет заключенные в кавычки ...
Как я могу это исправить?
Ценю вашу помощь.