Arquivo em lote substitui a marca de exclamação por uma marca de exclamação que escapou

Eu estou trabalhando em um arquivo de lote que obtém dados como uma variável e nessa variável tem um ponto de exclamação.

O que estou tentando fazer é adicionar os caracteres de escape necessários à variável.

"Title":"Turk 182!"

Acima está um exemplo dos dados com os quais estou trabalhando.

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

Mas não tenho certeza se essa é a sintaxe correta, pois como posso escapar de uma marca de esclamação se ela também é usada como parte da pesquisa e substituição?

Estou tentando substituir toda a marca de esclamação por uma versão com escape para que possa ser exibida e trabalhada.

Btw, existe alguma função existente em lote que irá remover e permitir o escape de todos os caracteres especiais?

Aqui está mais código que pode ajudar a explicar o que estou fazendo.

{"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

Então eu coloco a variável json no loop e o erro está fora em vez do valor verdadeiro. Acabei de ver o comando de substituição real que eu usei acima.

questionAnswers(4)

yourAnswerToTheQuestion