Для того, чтобы вернуть значения параметров мне нужно изменить строку, которая требует замены восклицательных знаков на выражения, чтобы эти восклицательные знаки были экранированы позже в процессе.Текущее решение не работает внутри if.Следующий рабочий скрипт довольно хорошо показывает проблему:
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET string="World^! wasserschutzpolizei^!"
REM REM Works quite well here!
REM SET "return1=!string:"=""!"
REM SET "return1=%return1:!=^^^!%"
REM SET "return1=!return1:""="!"
REM ECHO !return1!
IF NOT "!string!"=="" (
SET "return1=!string:"=""!"
REM This line doesn't work because of the % % inside the if...
REM Because it is one logical line.
SET "return1=%return1:!=^^^!%"
SET "return1=!return1:""="!"
ECHO !return1!
)
EXIT /B 0
ENDLOCAL
У меня был один нерабочий подход, который использует CALL SET
:
CALL SET "return1=%%return1:!=^^^!%%"
, но это не работает.
Что касается ответа, учтите, что для других вещей мне также нужно отложить расходы.
Итак, как мне нужно изменить код, особенно строку SET "return1=%return1:!=^^^!%"
, чтобы он работал внутри if?