【发布时间】:2012-11-01 14:04:06
【问题描述】:
我正在处理一个将数据作为变量获取的批处理文件,并且在该变量中它有一个感叹号。
我想要做的是将必要的转义字符添加到变量中。
"Title":"Turk 182!"
以上是我正在处理的数据示例。
setlocal EnableDelayedExpansion
rem replace ! with ^^!
set var=%var:!=^^!!%
但我不确定这是正确的语法,因为如果它也被用作搜索和替换的一部分,我怎么能逃避它?
我正在尝试用转义版本替换所有 esclamation 标记,以便可以显示和使用它。
顺便说一句,是否有任何现有的批处理函数可以删除并允许转义所有特殊字符?
这里有更多代码可以帮助解释我在做什么。
{"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 变量放在循环中,它错误而不是真实值我只看到我上面使用的实际替换命令。
【问题讨论】:
-
是为了个人娱乐(“看看我能在 CMD 中做什么”)还是你需要它? JavaScript 会更容易做到这一点。您可以在所有最新(我认为是 2000+)版本的 Windows 上使用
cscript my.js运行脚本。旁注:可能有更好的方法来执行您尝试通过搜索和替换实现的操作...... -
基本上我正在尝试对从 omdbapi.com 检索到的 json 数据进行一些处理。这是出于教育和实用目的,当然,看看我是否可以使用 wget 通过 json 获取数据。我可以得到数据,我只想正确解析它。到目前为止,这很困难,但可行。
-
您在第一次扩展
set json=%json:~1,-1%时丢失了数据。你如何将文本放入变量中?通过 FOR/F 循环? -
rem 捕获文本文件结果到变量集 /p json=
-
我只对 Windows 批处理文件解决方案感兴趣。因此标签、批处理文件、windows-xp.
标签: batch-file windows-xp replace