Instruction set dans boucle for ne fonctionne pas

Résolu/Fermé
Mouness - Modifié par Mouness le 23/10/2013 à 14:43
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 23 oct. 2013 à 15:54
Bonjour,

J'ai un petit souci avec une boucle FOR dans un batch (c'est mon premier batch) et je n'arrive pas determiner l'origine du probleme ! Si quelqu'un aurai quelque minute pour m'aider ce serai super :-)
==============================================================
voici ma boucle :
echo on
for %%x in (*.txt) do (
set /a cpt+=1
echo %cpt%
set NomFicSortie=%EMET%.%RECEPT%.%CHAMP3%.F%HHMM%%cpt%.%DJJMMAA%.%PRET%
echo %NomFicSortie%
rename "%%~fx" "%NomFicSortie%"
)
@echo off
==============================================================
mon probleme :
les deux instruction "set" fonctionne en dehors de la boucle mais ne fonctionne plus une fois dedans !! et j'avoue ça m'echappe !
==============================================================
resultat :
d:\test\source>for %x in (*.txt) do (
set /a cpt+=1
echo 1
set NomFicSortie="XXXXX"."XXXX"."XX".F14331.D231013."PRET"
echo
rename "%~fx" ""
)

d:\test\source>(
set /a cpt+=1
echo 1
set NomFicSortie="XXXXX"."XXXX"."XX".F14331.D231013."PRET"
echo
rename "d:\test\source\azerty123.txt" ""
)
1
Commande ECHO activée.
Le nom de fichier existe déjà, ou le fichier
est introuvable.

d:\test\source>(
set /a cpt+=1
echo 1
set NomFicSortie="XXXXX"."XXXX"."XX".F14331.D231013."PRET"
echo
rename "d:\test\source\test.txt" ""
)
1
Commande ECHO activée.
Le nom de fichier existe déjà, ou le fichier
est introuvable.
A voir également:

3 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
23 oct. 2013 à 15:02
hello
pour modifier des variables dans une boucle for, il faut
 setlocal enableDelayedExpansion
au début du script et utiliser
 ! 
à la place de
 % 
.
...
for %%x in (*.txt) do (
set /a cpt+=1
echo !cpt!
...
0
Super ça fonctionne Merci à toi !

Bon je vais chipoter un peu mais le echo ne m'affiche pas de contenu de la variable :-/
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
23 oct. 2013 à 15:54
j'ai 7 fichiers .bat
C:> bb
1
2
3
4
5
6
7
C:> type bb.bat
@echo off
SETLOCAL ENABLEdelayedExpansion
set cpt=0
for %%x in (*.bat) do (
set /a cpt+=1
echo !cpt!
)
montre le code
0