2017-10-18 7 views
0

Comment utiliser un fichier batch pour extraire les valeurs de propriété d'un fichier xml (build.xml) et définir une condition pour déterminer l'exécution du fichier xml ou pas?comment saisir les valeurs de propriété à partir de xml dans un fichier batch pour créer une condition d'exécution des fichiers

Je veux saisir les valeurs suivantes du build.xml:

<property name="appbox1URL" value="http://10.111.111.111"/> 
<property name="appbox2URL" value="http://10.222.222.222"/> 
<property name="domainName" value="xxxG"/> 

Dans mon fichier batch que je veux utiliser ces valeurs pour déterminer si nous pouvons faire un appel en cours d'exécution de ce fichier de construction. Un autre ensemble de valeurs est également accepté pour que la condition soit vraie, une pour xxxG et une autre pour Stage.

Psudeo dans le fichier batch

If appbox1URL = "http://10.111.111.111" and appbox2URL = "http://10.222.222.222" and domainName = "xxxG" 
OR 
If appbox1URL = "http://10.111.111.000" and appbox2URL = "http://10.222.222.000" and domainName = "Stage" 
THEN 
call ant -buildfile "D:\xxx\Trunk\build.xml" 

Comment est-ce supposé être codé dans le fichier batch?

directory of build.xml - "D:\xxx\Trunk\build.xml" 
directory of batchfile.bat - "D:\xxx\Trunk\Batch\batchfile.bat" 
+0

Tenir compte XProc ou xmlsh ou fourmi. Si vous utilisez un script shell général pour cela, il y a un grand risque que vous finissiez par analyser le fichier XML plusieurs fois - ou pire encore, que vous chargiez plusieurs fois la machine virtuelle Java. Sinon, placez la logique de contrôle dans XSLT. –

Répondre

0

Vérifiez xpath.bat (il devrait être dans le même répertoire que le script suivant):

:: Set relative path here if needed 
set "xmlFile=D:\xxx\Trunk\build.xml" 


for /f "usebackq delims=* tokens=" %%a in (`xpath.bat "%xmlFile%" "//property[@name='appbox1URL']/@value" `) do set "appbox1URL=%%a" 

for /f "usebackq delims=* tokens=" %%a in (`xpath.bat t.xml "//property[@name='appbox2URL']/@value" `) do set "appbox2URL=%%a" 

for /f "usebackq delims=* tokens=" %%a in (`xpath.bat t.xml "//property[@name='domainName']/@value" `) do set "domainName=%%a" 

if /i "%appbox1URL%" equ "http://10.222.222.222" if /i "%appbox2URL%" equ "http://10.222.222.000" if /i "%domainName%" equ "xxxG" (
    call ant -buildfile "D:\xxx\Trunk\build.xml" 
) 

if /i "%appbox1URL%" equ "http://10.222.222.222" if /i "%appbox2URL%" equ "http://10.222.222.000" if /i "%domainName%" equ "OtherEnvironment" (
    call ant -buildfile "D:\xxx\Trunk\build.xml" 
)