Hello,

J'essaye de développer un petit programme en batch afin de parcours des fichiers et sous dossiers xml, et savoir si dans le code on trouve la valeur perso ="1"

je fais deux boucles, une qui lit mes fichiers, et une autre qui parcours le code de chaque fichiers.

Le principe fonctionne si je mets un tokens=7 qui me retourne la 7e partie de la ligne ou je test si perso="1"

Ce que je voudrais en plus c'est de pouvoir retourner le numéro de ligne concernée, hors avec le tokens=7 il me mange des lignes puisque certaine peuvent contenir 12333 ou du vide et non des balises XML

Du coup il me faudrait un tokens=* c'est pourquoi j'utilise le set Array=!Array:~119,13! qui concatène ma chaîne et me retourne la valeur attendu.

Pour une raison que j'ignore mon if !Array!==%FindWord% ( ne fonctionne pas auriez vous des pistes ?


Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
:: Recherche dans un dossier parmis tous les fichiers xml present
:: Si l'on trouve le parametre perso=1
@echo off
setlocal enabledelayedexpansion
 
:: On definis les fichiers a scanner
:: Et la chaine a rechercher
:: Attention pas d'espace dans le chemin d'acces
set Path=C:\Users\ccordier\Documents\RechercheXMLPerso\XML_TEST
set Files=*.xml
set FindWord=F930PERSO="1"
set Cpt=0
set Ligne=0
 
echo --------------------------------------------------
echo --          Recherche Repertoire                --
echo --------------------------------------------------
echo Path !Path!
echo --------------------------------------------------
echo --       Recherche dans les XML                 --
echo --------------------------------------------------
 
 
for /r "%Path%" %%a in (%Files%) do (
 
	set Array2=%%a	
 
	for /f "tokens=* delims=/ "  %%i in ('type !Array2!') do (		
 
		set Array=%%i
		set Array=!Array:~119,13!	
		set /a Ligne += 1
 
		echo Array !Array!
		echo FindWord %FindWord%
 
		if !Array!==%FindWord% (
			echo %FindWord% Trouver
			echo %%a
			set /a Cpt += 1				
 
			echo Ligne !Ligne! 
			echo --------------------------------------------------
		)  
	) 
	set Ligne=0
)		
if !Cpt!==0 (
	echo Aucun fichier %FindWord% trouver
	echo --------------------------------------------------
)
 
echo --        Fichier trouver %cpt%                     --	
echo --------------------------------------------------
echo --                  Fin                         --
echo --------------------------------------------------
 
pause