Supprimer l'extension d'un fichier en batch
Résolu/Fermé
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
-
1 juin 2008 à 14:25
merzouki - 7 déc. 2012 à 19:17
merzouki - 7 déc. 2012 à 19:17
A voir également:
- Supprimer extension fichier windows 10
- Fichier rar - Guide
- Clé windows 10 gratuit - Guide
- Windows 10 gratuit - Guide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
8 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
2 juin 2008 à 21:53
2 juin 2008 à 21:53
Bonsoir,
En ce qui concerne l'expansion retardée des variables je ne peux que te diiriger sur l'aide en ligne (HELP SET, 2ème écran)
Pour l'utilisation de la commande c'est telle que je l'ai écrite, du moins je le pense car je ne l'ai pas utilisée avec une variable %%X en l'occurrence. D'ailleurs en recherchant je viens de m'apercevoir qu'il y a plus simple :
SET "nom_sans_extension=%%~nX" (Ici X est le nom de ta variable dans la boucle FOR) A chaque itération de ta boucle FOR la variable nom_sans_extension sera renseignée avec le nom des fichiers sans l'extension.
Tu trouveras les explications dans l'aide en ligne (HELP FOR 2ème écran) j'en reproduis une partie :
De plus, la substitution de références de variables FOR a été améliorée.
Vous pouvez maintenant utiliser la syntaxe optionnelle suivante :
En ce qui concerne l'expansion retardée des variables je ne peux que te diiriger sur l'aide en ligne (HELP SET, 2ème écran)
Pour l'utilisation de la commande c'est telle que je l'ai écrite, du moins je le pense car je ne l'ai pas utilisée avec une variable %%X en l'occurrence. D'ailleurs en recherchant je viens de m'apercevoir qu'il y a plus simple :
SET "nom_sans_extension=%%~nX" (Ici X est le nom de ta variable dans la boucle FOR) A chaque itération de ta boucle FOR la variable nom_sans_extension sera renseignée avec le nom des fichiers sans l'extension.
Tu trouveras les explications dans l'aide en ligne (HELP FOR 2ème écran) j'en reproduis une partie :
De plus, la substitution de références de variables FOR a été améliorée.
Vous pouvez maintenant utiliser la syntaxe optionnelle suivante :
%~I - étend %I en supprimant les guillemets (")
%~fI - étend %I en nom de chemin d'accès reconnu
%~dI - étend %I en lettre de lecteur uniquement
%~pI - étend %I en chemin d'accès uniquement
%~nI - étend %I en nom de fichier uniquement
%~xI - étend %I en extension de fichier uniquement
%~sI - chemin étendu contenant uniquement des noms courts
%~aI - étend %I en attributs du fichier
%~tI - étend %I en date/heure du fichier
%~zI - étend %I en taille du fichier
%~$PATH:I - parcourt les répertoires de la variable
d'environnement PATH et étend %I en nom du
premier fichier reconnu trouvé. Si le nom de la
variable d'environnement n'est pas défini ou
que le fichier n'est pas trouvé par la recherche,
alors ce modificateur étend en chaîne vide
Vous pouvez combiner les modificateurs pour obtenir des résultats composés :
%~dpI - étend %I en lettre de lecteur et chemin d'accès uniquement
%~nxI - étend %I en nom de fichier et extension uniquement
%~fsI - étend %I en nom de chemin complet avec noms courts
uniquement
%~dp$PATH:i - parcourt les répertoires listés dans la variable
d'environnement PATH à la recherche de %I et étend
en lettre de lecteur du premier trouvé.
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
3 juin 2008 à 02:59
3 juin 2008 à 02:59
Je t'ai fait un petit machin pour illustrer mes propos ...............
SETLOCAL ENABLEdelayedExpansion SETLOCAL ENABLEextensions CLS echo. CD C:\Documents and Settings\Christian\Mes documents\BATCH_files rem pour mon test : FOR %%X IN (aaa.txt) DO ( FOR %%X IN (*.*) DO ( SET "nom_sans_extension=%%~nX" REN "%%X" "!nom_sans_extension!.flv" ) ENDLOCAL
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
2 juin 2008 à 18:26
2 juin 2008 à 18:26
Bonsoir,
Cette commande chaineZ:~0,-%n% devrait répondre à ton problème :
Exemple :
Dans ton cas essaie ça. Attention Expansion retardée à mettre en ligne (!!) :
Cordialement.
Cchristian.
Cette commande chaineZ:~0,-%n% devrait répondre à ton problème :
Exemple :
SET chaineZ=abcABC123ABCabc echo --------------------------------------------------------------------------- . echo Commande : "echo %%chaineZ:~0,-%n%%%" echo Extraction de tous les c. de la chaine %chaineZ% sauf les %n% derniers. echo Le resultat est : !chaineZ:~0,-%n%! echo --------------------------------------------------------------------------- . Résultat : --------------------------------------------------------------------------- . Commande : "echo %chaineZ:~0,-4%" Extraction de tous les c. de la chaine abcABC123ABCabc sauf les 4 derniers. Le resultat est : abcABC123AB --------------------------------------------------------------------------- .
Dans ton cas essaie ça. Attention Expansion retardée à mettre en ligne (!!) :
SETLOCAL ENABLEdelayedExpansion @for %%X in (*.*) do ( SET var_temp=%%%X:~0,-4% ren "%%X" !var_temp! ENDLOCAL
Cordialement.
Cchristian.
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
1 juin 2008 à 16:56
1 juin 2008 à 16:56
Bonjour,
Tu insères dans ton batch une commande :
Tu insères dans ton batch une commande :
REN AAA.txt AAA
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
45
2 juin 2008 à 17:03
2 juin 2008 à 17:03
Oui je vois mais en fait voila la partie de mon programme concerné
@for %%X in (*.*) do (
ren "%%X" "%%X.flv"
)
J'utilise une boucle FOR, donc si j'utilise ta commande, sa fera comme si c'était
ren machin.mpg machin.mpg.flv
Donc il y a toujours ce .mpg, sinon y a t-il une solution de l'enlever même si il est déja renommé en flv ?
@for %%X in (*.*) do (
ren "%%X" "%%X.flv"
)
J'utilise une boucle FOR, donc si j'utilise ta commande, sa fera comme si c'était
ren machin.mpg machin.mpg.flv
Donc il y a toujours ce .mpg, sinon y a t-il une solution de l'enlever même si il est déja renommé en flv ?
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
45
2 juin 2008 à 18:52
2 juin 2008 à 18:52
J'ai du mal à comprendre la, tu peux préciser exactement comment je dois l'utiliser ? Merci comme même ^^
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
45
3 juin 2008 à 17:08
3 juin 2008 à 17:08
J'essaie ceci de ce pas !
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
45
3 juin 2008 à 17:25
3 juin 2008 à 17:25
Merci beaacoup à toi Cchristian, par contre, le %%~nX n'était pas enregistré dans la variable avec SET, mais j'ai contourné le problème en l'utilisant directement dans une ligne de commande comme celle ci
echo %%~nX
echo %%~nX
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
3 juin 2008 à 18:08
3 juin 2008 à 18:08
Bonjour,
Merci pour le retour, à bientôt.
Merci pour le retour, à bientôt.