2012-06-20 6 views
2
  1. J'ai cherché pendant une heure avec pas de chance
  2. Mon patron, il veut être un fichier batch

J'ai un fichier xml qui contient les éléments suivants.mise à jour fichier xml avec lot

<?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> 

Nous voulons mettre <smpnumprocs>4</smpnumprocs> (ce qui est le nombre de processeurs utilisés) à 2 donc, la ligne devrait ressembler à ceci <smpnumprocs>2</smpnumprocs>

je me suis dit comment arriver à la valeur que je veux avec cette

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

Maintenant, comment puis-je changer la valeur?

+0

duplicata possible de http://stackoverflow.com/questions/5273937/how-to-replace-substrings-in-windows-batch-file – kjp

+0

@kjp Non monsieur je l'ai déjà essayé et ça ne résout pas mon problème! –

Répondre

4

Vous pouvez utiliser le script, j'ai écrit:

@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 

scans Script par fichier XML donné et trouve la ligne avec smpnumprocs en elle. Si ce type de ligne est trouvé, il remplace 4 à 2.

Toutes les lignes sont vidées dans le fichier <xmlFilePathHere>.tmp, qui remplace le fichier original à la fin.

+0

Cela produira des problèmes avec les lignes vides, les lignes avec le texte «ON», «OFF» ou «/?» Et supprime les caractères de lignes comme «Bonjour! Un caret^' – jeb

+0

Ceci est une solution conçue pour un fichier xml donné. Il n'y a pas de tels caractères dedans. – Helbreder

+0

Vous avez raison, pour ce problème donné, votre solution s'adapte – jeb

Questions connexes