Bonjour,

je rencontre un problème agaçant avec une boucle for incluant des sous instructions, voici le code :

Code : 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
Rem initialisation du compteur

set Compteur=0

Rem le dossier "Repertoire" contient le fichier Contenu.txt, et se trouve dans le même répertoire que le batch

cd \Repertoire

Rem pour chaque ligne du fichier Contenu.txt

for /f "tokens=*" %%a in (Contenu.txt) do (

Rem Si le fichier décrit à la ligne lue est présent sur le disque dur :
if exist "%%a" (

Rem Copier un truc indépendant de %%a du fichier blabla.txt vers le fichier fichier_tiers.txt :
type blabla.txt >> fichier_tiers.txt

Rem écrire que le fichier de la ligne lue est présent dans le fichier journal.txt
echo %%a present >> journal.txt

Rem incrémenter de 1 le compteur :
set /a Compteur=%Compteur%+1

Rem sauter deux lignes dans le fichier fichier_tiers.txt :
echo. >> fichier_tiers.txt
echo. >> fichier_tiers.txt

Rem je voudrais qu'il sorte ici s'il a trouvé un fichier -> :fin, sinon continuer la lecture de Contenu.txt
)
)

:fin
le but :

1.lecture du fichier Contenu.txt dont voici un échantillon :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
%SystemDrive%\def.txt
%SystemDrive%\x.exe
%SystemDrive%\abc.txt
2. Vérification de la présence du fichier sur le disque dur, lu sur la ligne l de Contenu.txt :
- si ce fichier est présent, sortir définitivement de la boucle et appliquer les instructions d'après, il ne faut pas que les lignes suivantes soient lues
- si ce fichier n'est pas présent, passer à la ligne l+1, et ainsi de suite jusqu'à la fin de la lecture ; si toujours rien trouvé, passer à :fin

J'ai également essayer d'assigner %%a à une variable :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Rem Si le fichier décrit à la ligne lue est présent sur le disque dur :
if exist "%%a" (
set %filename%=%%a
mais à ce niveau, echo %filename% ne renvoie rien, donc le fichier journal.txt est vide.
Il semblerait qu'en plus du problème initial, les variables d'environnement soient mal tolérées et que C:\ marche mieux que %systemdrive%

Quelle serait votre approche dans ce genre de circonstance ?

Merci