Пакетный файл Заменить восклицательный знак на экранированный восклицательный знак

Я работаю над командным файлом, которыйданные как переменная, и в этой переменной они имеют восклицательный знак.

То, что я пытаюсь сделать, это добавить необходимые escape-символы в переменную.

"Title":"Turk 182!"

Выше приведен пример данных, с которыми я работаю.

setlocal EnableDelayedExpansion
rem replace ! with ^^!
set var=%var:!=^^!!%

Но я не уверен, что это правильный синтаксис, поскольку как я могу избежать восклицательного знака, если он 's также используется как часть поиска и замены?

Я пытаюсь заменить весь восклицательный знак на экранированную версию, чтобы он мог отображаться и работать с ним.

Кстати, есть ли какие-либо существующие функции в пакете, которые будут удалять и разрешать экранирование всех специальных символов?

Вот еще код, который может помочь объяснить, что я делаю.

{"Title":"Turk 182!","Year":"1985","Rated":"PG-13","Released":"15 Feb 1985","Runtime":"1 h 42 min","Genre":"Action, Comedy, Drama","Director":"Bob Clark","Writer":"Denis Hamill, James Gregory Kingston","Actors":"Timothy Hutton, Robert Urich, Kim Cattrall, Robert Culp","Plot":"Jimmy Lynch is angry because his older brother, who was injured as a result of an off duty fire rescue...","Poster":"http://ia.media-imdb.com/images/M/MV5BMTQ2OTk1ODA1MV5BMl5BanBnXkFtZTcwNjYwNjgyMQ@@._V1_SX300.jpg","imdbRating":"5.7","imdbVotes":"2,360","imdbID":"tt0090217","Response":"True"}

rem removes starting and ending brackets
set json=%json:~1,-1%
setlocal EnableDelayedExpansion
rem replace "," with linebreak
set json=!json:","="#"!
setlocal EnableDelayedExpansion
rem replace ! with ^^!
set json=%json:!=^^!!%

setlocal DisableDelayedExpansion
echo %json%
echo.
exit /b

Затем я помещаю переменную JSON в цикл, и это ошибкаs вместо истинного значения я просто вижу фактическую команду замены, которую я использовал выше.

Ответы на вопрос(4)

Ваш ответ на вопрос