Instruction set dans boucle for ne fonctionne pas

Résolu
Mouness -  
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.

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  2. Mouness
     
    Super ça fonctionne Merci à toi !

    Bon je vais chipoter un peu mais le echo ne m'affiche pas de contenu de la variable :-/
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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