Commande SET à l'intérieur d'une boucle

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Hugues MEFFRE
Batcheur occasionnel
Messages : 2
Enregistré le : 21 mars 2015 13:40

Commande SET à l'intérieur d'une boucle

Message par Hugues MEFFRE »

Bonjour,

J'essaie en vain d'inclure une commande SET dans une boucle FOR ... IN ... DO, mais la variable ne prend pas la valeur que devrait normalement lui attribuer SET.

But de cette commande : renommer automatiquement des fichiers portant le même nom et se terminant par un chiffre (ex : fichier1.doc , fichier2.doc , etc... à renommer en fichier2.doc , fichier3.doc, etc... de façon à créer dans le dossier un nouveau fichier1.doc plus récent) .

Aperçu de mon fichier batch :

@ echo off
echo Entrez le nombre de fichiers à renommer et le nom commun à chacun sans extension

for /l %%a in (1%,-1,1) do (
set valeur=%%a+1
ren %2%%a.* %2%valeur%.*
)

Or la variable "valeur" qui devrait s'incrémenter à chaque boucle ne bronche pas. Donc impossible de renommer mes fichiers.

Quelqu'un peut m'expliquer où est l'erreur ?

D'avance merci
Hugues MEFFRE
Batcheur occasionnel
Messages : 2
Enregistré le : 21 mars 2015 13:40

Re: [Résolu] Commande SET à l'intérieur d'une boucle

Message par Hugues MEFFRE »

(Re)bonjour,

J'ai fini par trouver la solution ! Il faut activer l'expansion de variable retardée ;)

Le fichier devient donc :

@ echo off
echo Entrez le nombre de fichiers à renommer et le nom commun à chacun sans extension

setlocal enabledelayedexpansion

for /l %%a in (%1,-1,1) do (
set /a valeur=%%a+1
ren %2%%a.* %2!valeur!.*
)

et ça marche !

Merci à Batchman ; je me suis inspiré de sa solution d'un autre post :idea:
dépannage pc
Batcheur occasionnel
Messages : 2
Enregistré le : 22 sept. 2015 16:59

Re: Commande SET à l'intérieur d'une boucle

Message par dépannage pc »

Bonjour,

je ne savais pas que l'on pouvait faire des boucle for en batch !
Ou avez vous trouvez le manuel ? man for ?
Sur mon site web: http://www.elogweb.fr , je vais surement poster des petits programmes que j'ai fais en batch !! et j'aimerais faire une liste de toutes les commandes (pour la programmation)
Répondre