のデータを変数として取得するバッチファイルで作業していますが、その変数には感嘆符が付いています。
私がやろうとしているのは、必要なエスケープ文字を変数に追加することです。
"Title":"Turk 182!"
上記は私が扱っているデータの例です。
setlocal EnableDelayedExpansion
rem replace ! with ^^!
set var=%var:!=^^!!%
しかし、それが正しい構文であるかどうかはわかりません。検索と置換の一部としても使用されている場合、エスクラメーションマークをエスケープするにはどうすればよいですか?
すべてのエスクラメーションマークをエスケープバージョンに置き換えて、表示および操作できるようにしようとしています。
ところで、すべての特殊文字を削除してエスケープできる既存の関数はバッチでありますか?
これが私がしていることを説明するのに役立つかもしれないより多くのコードです。
{"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変数をループに配置すると、真の値の代わりにエラーが発生します。上記で使用した実際の置換コマンドが表示されます。