- 我已经搜索了一个小时但没有成功
- 我的老板希望它是一个批处理文件
我有一个 xml 文件,其中包含以下内容。
<?xml version="1.0"?>
<profiledoc default="*** Last Run ***">
<profile name="*** Last Run ***" >
<workingdir>c:\proj</workingdir>
<somestuff>none</somestuff>
<smpnumprocs>4</smpnumprocs>
<otherstuff></otherstuff>
<llama>FLUFFY</llama>
<language>en-us</language>
<customexe></customexe>
<addlparams></addlparams>
<graphicsdevice>win32</graphicsdevice>
</profile>
</profiledoc>
我们想要设置<smpnumprocs>4</smpnumprocs>
(即使用的处理器数量)到 2
因此,该行应该如下所示<smpnumprocs>2</smpnumprocs>
我想出了如何通过这个获得我想要的价值
FOR /f "tokens=3 delims=>< " %%a IN ('TYPE %LOCAL_FILE% ^| FIND "<smpnumprocs>"') DO SET NUM_PROCS=%%a
现在我该如何更改该值?
你可以使用我写的脚本:
@echo OFF
@setlocal ENABLEDELAYEDEXPANSION
if "%~1" == "" (
echo Please provide xml file path as a first parameter.
exit /B 1
)
if not exist "%~1" (
echo Xml file with given path does not exist.
exit /B 2
)
if exist "%~1.tmp" del /F /Q "%~1.tmp"
for /F "delims=" %%G in (%~1) do (
set LINE=%%G
if not "!LINE!" == "!LINE:smpnumprocs=!" (
set LINE=!LINE:4=2!
)
>> "%~1.tmp" echo !LINE!
)
del /F /Q "%~1"
ren "%~1.tmp" "%~1"
@endlocal
脚本扫描给定的 xml 文件并找到符合以下内容的行smpnumprocs
在里面。如果找到这种行,则将 4 替换为 2。
所有行都转储到<xmlFilePathHere>.tmp
文件,最后替换原始文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)