[Batch] Boucle, tri
Dernière réponse : dans Programmation
Bonjour,
Je m'initie un peu au batch de windows, et je me prends la tête avec un script de rien du tout visant à renommer un ensemble de fichiers pour que ça ressemble à:
Sujet01
Sujet02
Sujet03
Sujet04
etc.
Pour l'instant ça ressemble à ça:
Mais... cela ne renomme que le premier fichier dans l'ordre alphabétique, pas les autres. Je sais que ma boucle est mal faite mais j'arrive pas à trouver comment faire pour mettre l'incrémentation dedans et repartir pour prendre en compte tous les fichiers.
Et quand j'arrive à prendre tous les fichiers, c'est l'incrémentation qui foire :-(
Le 2e problème est qu'il me faut trier en entrée les fichiers par date de modification, mais j'avoue que je ne vois pas comment me servir du sort dans ma boucle, déjà que j'arrive pas à la boucler :-)
Voilà... à l'aide ;o)
Je m'initie un peu au batch de windows, et je me prends la tête avec un script de rien du tout visant à renommer un ensemble de fichiers pour que ça ressemble à:
Sujet01
Sujet02
Sujet03
Sujet04
etc.
Pour l'instant ça ressemble à ça:
@ECHO OFF
set a=1
echo "Quel nom voulez-vous pour vos fichiers?"
set /P nom=Nom:
FOR %%i IN ( *.jpg ) DO REN %%i %nom%%a%.jpg
set /A a=a+1
@echo ON
Mais... cela ne renomme que le premier fichier dans l'ordre alphabétique, pas les autres. Je sais que ma boucle est mal faite mais j'arrive pas à trouver comment faire pour mettre l'incrémentation dedans et repartir pour prendre en compte tous les fichiers.
Et quand j'arrive à prendre tous les fichiers, c'est l'incrémentation qui foire :-(
Le 2e problème est qu'il me faut trier en entrée les fichiers par date de modification, mais j'avoue que je ne vois pas comment me servir du sort dans ma boucle, déjà que j'arrive pas à la boucler :-)
Voilà... à l'aide ;o)
Autres pages sur : batch boucle tri
Lassé par la pub ? Créez un compte
Yes ! Ca marche enfin !
Par contre, comment faire pour renommer suivant un certain ordre, comme celui de... la prise de vue ? -_-
@ECHO OFF
set a=1
echo "Quel nom voulez-vous pour les photos ?"
set /P nom=Nom:
echo "Combien de photos y-a-t-il ?"
set /P n=Nombre:
:boucle
FOR /L %%i IN (1,1,%n%) DO REN *.jpg %nom%%%i.jpg
@echo ON
Par contre, comment faire pour renommer suivant un certain ordre, comme celui de... la prise de vue ? -_-
(Je réponds ici au premier message)
Vire le @echo on de la ligne 7, il ne sert à rien
La ligne 6 n'est pas dans la boucle. Syntaxe correcte :
Mais tu ne peux pas te servir de %a% comme ça
A cause de la non-"expansion retardée" de ta variable %a%.
Voir CMD /? pour plus de renseignement.
Pour ce qui est de l'ordre par date de modif, la commande DIR permet de le faire grâce au paramètre \o Il te reste donc à utiliser FOR /F ... (commande)
Enjoy!
Vire le @echo on de la ligne 7, il ne sert à rien
La ligne 6 n'est pas dans la boucle. Syntaxe correcte :
FOR %%i IN (*.jpg) DO ( REN %%i %nom%%a%.jpg SET /A a=a+1 )
Mais tu ne peux pas te servir de %a% comme ça
A cause de la non-"expansion retardée" de ta variable %a%.
Voir CMD /? pour plus de renseignement.
Pour ce qui est de l'ordre par date de modif, la commande DIR permet de le faire grâce au paramètre \o Il te reste donc à utiliser FOR /F ... (commande)
Enjoy!
Là je t'avoue être un peu perdu.
J'ai essayé:
Qui ne renomme que la première, la plus petite je crois.
Avec /F, je n'ai pas compris si l'on pouvait cumuler /L.
En tout cas, en les cumulant:
Ca ne fait plus rien ;o)
Seldon, un peu paumé...
J'ai essayé:
@ECHO OFF
set a=1
echo "Quel nom voulez-vous pour les photos ?"
set /P nom=Nom:
echo "Combien de photos y-a-t-il ?"
set /P n=Nombre:
dir /O:S | FOR /L %%i IN (1,1,%n%) DO REN *.jpg %nom%%%i.jpg
@echo ON
Qui ne renomme que la première, la plus petite je crois.
Avec /F, je n'ai pas compris si l'on pouvait cumuler /L.
En tout cas, en les cumulant:
FOR /F dir /O:S /L %%i IN (1,1,%n%) DO REN *.jpg %nom%%%i.jpg
Ca ne fait plus rien ;o)
Seldon, un peu paumé...
Ah bah la soluce pour écrire sur trois chiffres est aussi dans SET /? :
Afficher pleins de 0, suivi du nombre et ne prendre que les n derniers :
Tu tâcheras d'avoir moins de 1000 photos, picétoo.
Afficher pleins de 0, suivi du nombre et ne prendre que les n derniers :
SET a=2
SET b=00000000000000%a%
ECHO %b:~-3%
SET a=
SET b=00000000000000%a%
ECHO %b:~-3%
SET a=123
SET b=00000000000000%a%
ECHO %b:~-3%
SET a=3214
SET b=00000000000000%a%
ECHO %b:~-3%
SET b=00000000000000%a%
ECHO %b:~-3%
SET a=
SET b=00000000000000%a%
ECHO %b:~-3%
SET a=123
SET b=00000000000000%a%
ECHO %b:~-3%
SET a=3214
SET b=00000000000000%a%
ECHO %b:~-3%
Tu tâcheras d'avoir moins de 1000 photos, picétoo.
(EDIT: A chaque fois j'ai un message de retard.)
Meuhhhhhhhh non.
Relis l'aide de FOR /F. Tu verras qu'il faut mettre la commande DIR /O.. dans les parenthèses.
Pour ton %a%, c'est comme tu en avais l'intuition SET a=2 / SET /A a=a+1 mais en utilisant l'expansion retardée. Pour ça, RTFM aux pages SET et SETLOCAL
Meuhhhhhhhh non.
Relis l'aide de FOR /F. Tu verras qu'il faut mettre la commande DIR /O.. dans les parenthèses.
Pour ton %a%, c'est comme tu en avais l'intuition SET a=2 / SET /A a=a+1 mais en utilisant l'expansion retardée. Pour ça, RTFM aux pages SET et SETLOCAL
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :