3
  1. 私は運が悪いと1時間探していました
  2. 私の上司はそれをバッチファイルにしたいと思っています

以下を含む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>

(使用されるプロセッサーの数) を 2に設定したい<smpnumprocs>4</smpnumprocs>ので、行は次のようになります。<smpnumprocs>2</smpnumprocs>

これで必要な値に到達する方法を見つけました

FOR /f "tokens=3 delims=><  " %%a IN ('TYPE %LOCAL_FILE% ^| FIND "<smpnumprocs>"') DO SET NUM_PROCS=%%a

どうすれば値を変更できますか?

4

1 に答える 1

4

私が書いたスクリプトを使用できます:

@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ファイルにダンプされ、最後に元のファイルが置き換えられます。

于 2012-06-21T06:51:51.560 に答える