我有一个包含以下的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
文件,该文件将在最后替换原始文件。