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
Commande SET à l'intérieur d'une boucle
Modérateur : WIN32-[GG]
-
- Batcheur occasionnel
- Messages : 2
- Enregistré le : 21 mars 2015 13:40
-
- Batcheur occasionnel
- Messages : 2
- Enregistré le : 21 mars 2015 13:40
Re: [Résolu] Commande SET à l'intérieur d'une boucle
(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
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
-
- Batcheur occasionnel
- Messages : 2
- Enregistré le : 22 sept. 2015 16:59
Re: Commande SET à l'intérieur d'une boucle
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)
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)