A voir également:
- Renommer des fichiers avec commande batch
- Renommer plusieurs fichiers en même temps - Guide
- Invite de commande - Guide
- Fichier batch - Guide
- Commande terminal mac - Guide
- Renommer iphone - Guide
23 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
16 nov. 2011 à 15:15
16 nov. 2011 à 15:15
hello
est ce que le nombre de # est fixe ? 5 # et 4 #
est ce que le nombre de # est fixe ? 5 # et 4 #
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 16/11/2011 à 15:31
Modifié par dubcek le 16/11/2011 à 15:31
oublier la question précédente
essayer ça, enlever le echo si c'est bon
essayer ça, enlever le echo si c'est bon
@ echo off setlocal enableDelayedExpansion for /f "delims=_ tokens=1,2,3" %%a in ('dir /b source*') do ( set f=id_%%b echo ren %%a_%%b_%%c !f! )
Merci beaucoup !. Les chiffres que j'ai symbolisé par des # sont en nombre variable dans les paquets mais séparés par des "_".
Je dois avouer que j'y comprends rien à ce langage mais je vais essayer
....
Je dois avouer que j'y comprends rien à ce langage mais je vais essayer
....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
17 nov. 2011 à 07:47
17 nov. 2011 à 07:47
il faut enlever le echo
ren %%a_%%b_%%c !f!
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
18 nov. 2011 à 10:19
18 nov. 2011 à 10:19
setlocal enableDelayedExpansion
autorise la modification des variables dans une boucle for
for /f "delims=_ tokens=1,2,3" %%a in ('dir /b source*') do (
on boucle sur l'ensemble de noms de fichiers retournés par dir,
avec _ comme séparateur. Donc %%a = source, %%b = #####, %%c =####
set f=id_%%b
le nouveau nom est : f = id_#####
ren %%a_%%b_%%c !f!
on renomme
autorise la modification des variables dans une boucle for
for /f "delims=_ tokens=1,2,3" %%a in ('dir /b source*') do (
on boucle sur l'ensemble de noms de fichiers retournés par dir,
avec _ comme séparateur. Donc %%a = source, %%b = #####, %%c =####
set f=id_%%b
le nouveau nom est : f = id_#####
ren %%a_%%b_%%c !f!
on renomme
Merci, cela fonctionne.
Comment puis-je faire maintenant pour désigner à cette commande un répertoire pour lequel renommer les fichiers: curieusement la commande CD repertoire ne semble pas fonctionner...
Enfin, souci: je perd l'extension des fichiers!!!. Il s'agit en particulier d'images jpg et png, psd.
Merci d'avance
Comment puis-je faire maintenant pour désigner à cette commande un répertoire pour lequel renommer les fichiers: curieusement la commande CD repertoire ne semble pas fonctionner...
Enfin, souci: je perd l'extension des fichiers!!!. Il s'agit en particulier d'images jpg et png, psd.
Merci d'avance
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 21/11/2011 à 08:16
Modifié par dubcek le 21/11/2011 à 08:16
pour l'extension comment s'appellent les fichiers source_#####_####.EXT ou source_#####_#### ?
pour la commande cd, si il y a changement de lecteur, utiliser cd /d
pour la commande cd, si il y a changement de lecteur, utiliser cd /d
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 nov. 2011 à 09:33
21 nov. 2011 à 09:33
pour renommmer en conservant l'extension
@ echo off setlocal enableDelayedExpansion for /f "delims=_ tokens=1,2,3" %%a in ('dir /b source*') do ( set f=id_%%b%%~xc ren %%a_%%b_%%c !f! )
Merci, c'est parfait.
Dernière question: si je veut renommer "source" en "C-ID"
set f=C-ID_%%b%%~xc
curieusement, cela ne fonctionne pas. Question de syntax avec le tiret ?
Merci beaucoup pour ton aide, je n'aurais jamais trouvé tout seul :)
Dernière question: si je veut renommer "source" en "C-ID"
set f=C-ID_%%b%%~xc
curieusement, cela ne fonctionne pas. Question de syntax avec le tiret ?
Merci beaucoup pour ton aide, je n'aurais jamais trouvé tout seul :)
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 nov. 2011 à 11:00
21 nov. 2011 à 11:00
si, ca doit marcher, c'est l'espace qui peut être un problème, pas le -
Pour corser la chose, comment modifier le code si j'ai un nombre variable de paquets ### delimités par des _ dans le nom initial du fichier ? de sorte à n'en garder qu'un à l'arrivé ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 nov. 2011 à 14:46
21 nov. 2011 à 14:46
la variable %%b sera toujours le premier champ de #### après source
plus exactement , je voudrais que cela fonctionne avec des fichiers "source_#####_####" aussi bien que "source_#####_####_#####_####_####"
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 nov. 2011 à 16:16
21 nov. 2011 à 16:16
C:> type liste.txt source_##### source_#####_#### source_#####_####_#### source_#####_####_####_#### source_#####_####_#####_####_### C:> C:> type aa.bat @ echo off for /f "delims=_ tokens=1,2,3" %%a in ('type liste.txt') do ( echo %%a_%%b ) C:> C:> aa source_##### source_##### source_##### source_##### source_#####
d'où sort cette "liste.txt " ??
Je souhaite juste exécuter un batch qui va renommer les fichiers d'un répertoire:
par exemple:
source_56075224_5835787_p0_544491b devient ID_56075224
source_591812442_7999 devient ID_59112442
renommer source et ne garder que le premier paquet de chiffres entre les deux premiers "_", et ce quelque soit le nombre de paquets.
Je souhaite juste exécuter un batch qui va renommer les fichiers d'un répertoire:
par exemple:
source_56075224_5835787_p0_544491b devient ID_56075224
source_591812442_7999 devient ID_59112442
renommer source et ne garder que le premier paquet de chiffres entre les deux premiers "_", et ce quelque soit le nombre de paquets.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
22 nov. 2011 à 07:58
22 nov. 2011 à 07:58
liste.txt contient des exemples de noms de fichier
voila
voila
C:> dir /b source_56075224_5835787_p0_544491b source_591812442_7999 C:> type aa.bat @ echo off setlocal enableDelayedExpansion for /f "delims=_ tokens=1,2*" %%a in ('dir /b source*') do ( set f=ID_%%b%%~xc ren %%a_%%b_%%c !f! ) C:>aa C:> dir /b ID_56075224 ID_591812442 C:>
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
131
22 nov. 2011 à 11:14
22 nov. 2011 à 11:14
salut ludo,
Est-ce que tu es attaché à faire un programme en batch ?
En Python, ce serait beaucoup plus facile.
Enfin bon, je dis ça parce que je ne connais pas le batch et que les codes aimablement proposés par dubcek ne me parlent pas. Mais justement, Python est plus parlant quand on voit un code.
Et puis, il y a un problème potentiel:
que se passera-t-il avec le code de dubcek et que voudrais tu qu'il se passe s'il arrive le cas où deux fichiers de noms
source_56075224_5835787_p0_544491b
et
source_56075224_8888888_p0_544491b
seront à renommer ?
Il va falloir rajouter des traitements dans le programme batch, et ça va devenir complexe. Le batch n'est pas très bien adapté me semble-t-il.
Quant à Python, il suffit de 10 minutes pour l'installer et les programmes s'écrivent rapidement
Est-ce que tu es attaché à faire un programme en batch ?
En Python, ce serait beaucoup plus facile.
Enfin bon, je dis ça parce que je ne connais pas le batch et que les codes aimablement proposés par dubcek ne me parlent pas. Mais justement, Python est plus parlant quand on voit un code.
Et puis, il y a un problème potentiel:
que se passera-t-il avec le code de dubcek et que voudrais tu qu'il se passe s'il arrive le cas où deux fichiers de noms
source_56075224_5835787_p0_544491b
et
source_56075224_8888888_p0_544491b
seront à renommer ?
Il va falloir rajouter des traitements dans le programme batch, et ça va devenir complexe. Le batch n'est pas très bien adapté me semble-t-il.
Quant à Python, il suffit de 10 minutes pour l'installer et les programmes s'écrivent rapidement