【发布时间】:2016-08-07 01:25:10
【问题描述】:
我有一个 app.config,看起来像这样:
<!-- Device Configuration goes here -->
<DinoConfig Alpha="aaa" Beta="bbb" Gamma="ccc" Theta="">
<Dino Zeta="ooo" Delta="hhh" Tau="rrr" Rho="ddd" />
</DinoConfig>
现在我想使用批处理文件在 DinoConfig 父节点中将 Beta 更改为“yyy”,将 Gamma 更改为“zzz”。我也想更改子节点(Dino)中的键值对。
我目前使用批处理脚本的方式:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "string=^<DinoConfig Alpha="nnn" Beta="mmm" Gamma="iii" Theta=""^>"
set "dir=%temp%" & set "file=Dino.config" & pushd "!dir!"
for /f "tokens=*" %%G in (%file%) do (set cstring=%%G
if "!cstring:~6,8!"=="Beta" set "cstring=%%G"
echo "!cstring!" | findstr /r /b /c:".*jjj.*" >nul 2>&1 && echo %string% || if defined cstring echo !cstring!
) >> %file:.config=_mod.config%
del %file% & ren %file:.config=_mod.config% %file% & popd
exit /b
使用它我正在更改 Beta="bbb" 并且在下一次迭代中我正在更改 ="vvv"(如果我可以同时更改两者会很方便)。
【问题讨论】:
-
你能告诉我我怎样才能做到这一点。
-
1. SO 不是免费的代码编写服务,因此如果您需要帮助,您需要自己尝试,分享您的努力并准确描述您遇到的问题;请学习how to ask; 2. 要处理 XML 数据,您应该使用本机支持该格式的东西;批处理脚本只能处理文本文件;将 XML 视为普通文本并非易事,而且对于数据被破坏也非常危险......
-
我对 SO 并不陌生,之前已经发布过问题。我知道如何编码,所以我只想要这种方法。那就足够了。根据您的要求,我正在更新上面的问题。我必须说我不太喜欢批处理编程,但我知道我的东西。谢谢,如果您愿意,请帮助我。
标签: batch-file batch-processing