Batch renommer un fichier en fonction de l'extension
Fermé
chasseur1044
Messages postés
65
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
26 août 2014
-
Modifié par chasseur1044 le 19/06/2014 à 15:34
chasseur1044 Messages postés 65 Date d'inscription lundi 16 juin 2014 Statut Membre Dernière intervention 26 août 2014 - 22 août 2014 à 11:46
chasseur1044 Messages postés 65 Date d'inscription lundi 16 juin 2014 Statut Membre Dernière intervention 26 août 2014 - 22 août 2014 à 11:46
A voir également:
- Batch renommer un fichier en fonction de l'extension
- Fichier rar - Guide
- Changer extension fichier - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
6 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
19 juin 2014 à 15:50
19 juin 2014 à 15:50
hello
montre un exemple de nom avant et après
montre un exemple de nom avant et après
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
20 août 2014 à 16:30
20 août 2014 à 16:30
utiliser
C:> set n=LeFameuxNomUSDuFichieret renommer chaque fichier individuellement
C:> echo %n:US=U.S.%
LeFameuxNomU.S.DuFichier
chasseur1044
Messages postés
65
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
26 août 2014
4
19 juin 2014 à 15:33
19 juin 2014 à 15:33
Concernant le problème de l'ajout de la date après le nom du fichier, le problème est résolu :
De plus ça ne touche pas à mon fichier .bat
Mais si on peut m'expliquer la différence avec le code du dessus, pourquoi dans un cas on ne prend pas en compte l'extension et de deux pourquoi ça s'insère après l'extension initiale je suis preneur.
@echo off
setlocal enableDelayedExpansion
for %%F in (*.pdf) do (
set "name=%%F"
ren "!name!" "!name:.pdf=_%date:~3,2%%date:~-4%.pdf!"
)
De plus ça ne touche pas à mon fichier .bat
Mais si on peut m'expliquer la différence avec le code du dessus, pourquoi dans un cas on ne prend pas en compte l'extension et de deux pourquoi ça s'insère après l'extension initiale je suis preneur.
chasseur1044
Messages postés
65
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
26 août 2014
4
20 août 2014 à 16:17
20 août 2014 à 16:17
Me revoilà
Bonjour à tous
Bon petit problème
voilà mon code :
Mon soucis, je veux comme vous pouvez le voir modifier le nom d'un fichier :
LeFameuxNomUSDuFichier
en
LeFameuxNomU.S.DuFichier
Le soucis c'est que quand j'exécute ce script
ça me met bien le US en U.S. mais ça me supprime la suite du nom
Clairement le * ne peut pas être dans la seconde partie du rename.
Alors pour éviter les fausses pistes, j'ai 28 fichier avec la partie en grasse ci dessous qui n'est pas la même à chaque fois :
LeFameuxNomUSDuFichier
Donc je ne peux pas tout simplement ajouter dans le rename la suite du nom et pas envie de me taper 28 lignes de codes en plus pour ça surtout que ce script est amené à être utilisé sur d'autres fichiers.
Voilà.
Merci aux âmes charitables qui pourraient me venir en aide sur ce petit problème.
Merci bien
Bonjour à tous
Bon petit problème
voilà mon code :
setlocal enableDelayedExpansion
for %%F in (*.ppt) do (
set "name=%%F"
if %%F GTR Portfo*US (ren "*US*.ppt" "*U.S.*.ppt")
)
Mon soucis, je veux comme vous pouvez le voir modifier le nom d'un fichier :
LeFameuxNomUSDuFichier
en
LeFameuxNomU.S.DuFichier
Le soucis c'est que quand j'exécute ce script
ça me met bien le US en U.S. mais ça me supprime la suite du nom
Clairement le * ne peut pas être dans la seconde partie du rename.
Alors pour éviter les fausses pistes, j'ai 28 fichier avec la partie en grasse ci dessous qui n'est pas la même à chaque fois :
LeFameuxNomUSDuFichier
Donc je ne peux pas tout simplement ajouter dans le rename la suite du nom et pas envie de me taper 28 lignes de codes en plus pour ça surtout que ce script est amené à être utilisé sur d'autres fichiers.
Voilà.
Merci aux âmes charitables qui pourraient me venir en aide sur ce petit problème.
Merci bien
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
chasseur1044
Messages postés
65
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
26 août 2014
4
20 août 2014 à 16:53
20 août 2014 à 16:53
individuellement ?
Je ne comprend pas Dubcek.
Si je fais ça ça suit tes consignes ?
ça marche nickel
je ne sais pas pourquoi ne pas faire simple quand on peut...
moi j'essaye de mettre des * des ?...
Il suffit juste de mettre ce qui gêne...
Merci beaucoup
Mais du coup (^^) j'avais dans tout le code plusieurs rename
dont un qui traîte la fin du nom du fichier :
à la base c'est USD => (USD)
mais comme on ajoute les points j'ai modifié
seulement ça ne fonctionne plus, les parenthèses ne se mettent pas.
Je dois ajouter une pause ?
Problème résolu juste je sort de la boucle et je le met dans une autre
Merci Dubcek
Je ne comprend pas Dubcek.
Si je fais ça ça suit tes consignes ?
setlocal enableDelayedExpansion
for %%F in (*.ppt) do (
set "name=%%F"
if %%F GTR Portfo*US (ren "!name!" "!name:US=U.S.!")
}
ça marche nickel
je ne sais pas pourquoi ne pas faire simple quand on peut...
moi j'essaye de mettre des * des ?...
Il suffit juste de mettre ce qui gêne...
Merci beaucoup
Mais du coup (^^) j'avais dans tout le code plusieurs rename
dont un qui traîte la fin du nom du fichier :
if %%F GTR Portfo (ren "!name!" "!name:U.S.D.ppt=(USD).ppt!")
à la base c'est USD => (USD)
mais comme on ajoute les points j'ai modifié
seulement ça ne fonctionne plus, les parenthèses ne se mettent pas.
Je dois ajouter une pause ?
Problème résolu juste je sort de la boucle et je le met dans une autre
Merci Dubcek
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 août 2014 à 11:03
21 août 2014 à 11:03
individuellement ?
Je ne comprend pas Dubcek.
ne pas uiliser de * dans rename
essayer de passer par une variable pluot que mettre "!name:U.S.D.ppt=(USD).ppt!") das le rename
Je ne comprend pas Dubcek.
ne pas uiliser de * dans rename
essayer de passer par une variable pluot que mettre "!name:U.S.D.ppt=(USD).ppt!") das le rename
chasseur1044
Messages postés
65
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
26 août 2014
4
21 août 2014 à 11:13
21 août 2014 à 11:13
Tu veux dire que si je change la variable du nom à chaque fois je peux tout laisser dans la boucle ?
Donc un nouveau set pour chaque changement ?
Donc un nouveau set pour chaque changement ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 août 2014 à 14:45
21 août 2014 à 14:45
essayer
chasseur1044
Messages postés
65
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
26 août 2014
4
21 août 2014 à 15:21
21 août 2014 à 15:21
J'ai essayé par curiosité et ça ne fonctionne pas :)
J'ai essayé de mettre :
name
name1 et name2
Si j'ai bien compris c'est ce que tu me proposais non ?
De changer le nom de variable ?
Mais bon c'est pas gênant le batch fonctionne maintenant.
En revanche petite question par simple curiosité car j'ai contourné le problème (d'ailleurs si j'avais su avant j'aurai gagné 2 jours de tranquillité ^^) :
J'avais cette ligne de code :
Mais ça ne respecte pas la casse.
On peut faire en sorte que ça respecte ?
(Je rappel juste que c'est par curiosité, je n'en ai plus besoin dans mon code).
J'ai essayé de mettre :
name
name1 et name2
Si j'ai bien compris c'est ce que tu me proposais non ?
De changer le nom de variable ?
Mais bon c'est pas gênant le batch fonctionne maintenant.
En revanche petite question par simple curiosité car j'ai contourné le problème (d'ailleurs si j'avais su avant j'aurai gagné 2 jours de tranquillité ^^) :
J'avais cette ligne de code :
ren "!name!" "!name:US=U.S.!"
Mais ça ne respecte pas la casse.
On peut faire en sorte que ça respecte ?
(Je rappel juste que c'est par curiosité, je n'en ai plus besoin dans mon code).
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
22 août 2014 à 09:22
22 août 2014 à 09:22
DOS ignore la casse, A ou a c'est le même fichier
C:> dir /b
C:> dir > A
C:> dir > a
C:> dir /b
A
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 août 2014 à 08:57
21 août 2014 à 08:57
à quoi sert ce test if %%F GTR Portfo puisque %%F est un nom et GTR teste des valeurs numérques ?
chasseur1044
Messages postés
65
Date d'inscription
lundi 16 juin 2014
Statut
Membre
Dernière intervention
26 août 2014
4
21 août 2014 à 10:36
21 août 2014 à 10:36
Salut
Donc oui c'est bien ça, ça fonctionne aussi sur une string
J'avais vu ça ici (http://www.batcher.fr/fonctions.php) :
Donc oui c'est bien ça, ça fonctionne aussi sur une string
J'avais vu ça ici (http://www.batcher.fr/fonctions.php) :
Les comparants utilisables sont:
EQU - égal à
NEQ - différent de
LSS - inférieur à
LEQ - inférieur ou égal à
GTR - supérieur à
GEQ - supérieur ou égal à
q Il est possible de comparer des chaînes de caractères ou bien des chiffres.
19 juin 2014 à 15:52
-Toto-dossier.pdf
Nom du fichier après :
dossier_062014.pdf
Ce qui me manque, c'est la suppression de la partie -Toto-
19 juin 2014 à 16:52
Modifié par chasseur1044 le 19/06/2014 à 17:06
ça ne change rien sur mes fichiers
Peux tu m'expliquer rapidement que j'essaye de travailler dessus stp ?
%%~nb => le nom sans l'extension
%d% => la date définie plus haut
%%~xb => ?
%%a => ?
Dernière question, comment ce fait il que quand on lance le script il n'y a pas de confirmation à donner ?
19 juin 2014 à 17:11
ça modifie bien le nom, mais ça supprime l'extension, je passe d'un pdf à un simple fichier
ensuite, je perd une grande partie du nom du fichier (début et fin)
Enfin, ça ne traite qu'un fichier et non tous les fichiers du dossier.
Et une fois un fichier traité ça ne traite pas le suivant si je relance le batch
19 juin 2014 à 17:16
Car le nom de mes fichiers sont de la forme -nnnnn-vvvvv-xxxxxx
donc j'ai 3 -
et ça me supprime donc la chaine n et la chaine x
en revanche l'extension ? ça je devrais pouvoir l'ajouter.
Mais pourquoi un seul fichier est traité ?