Instruction set dans boucle for ne fonctionne pas
Résolu
Mouness
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
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.
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.
3 réponses
-
hello
pour modifier des variables dans une boucle for, il fautsetlocal enableDelayedExpansion
au début du script et utiliser!
à la place de%
....
for %%x in (*.txt) do (
set /a cpt+=1
echo !cpt!
... -
Super ça fonctionne Merci à toi !
Bon je vais chipoter un peu mais le echo ne m'affiche pas de contenu de la variable :-/ -
j'ai 7 fichiers .bat
C:> bb
montre le code
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!
)