Batch : lister noms de ficheirs sans extensio

Résolu/Fermé
Profil bloqué - 30 août 2009 à 21:33
 Tym - 14 mai 2012 à 11:23
Bonjour,

je tente de faire un batch me permettant de lister les fichiers d'un dossier dans un fichier texte et ce en retirant leur extension.

Pour le moment j'ai un code me permettant de faire ce que je souhaite sauf que je ne sais pas comment retirer l'extension dans la liste créée.

Mon code actuel :

echo off
dir .\dossier\*.ext /b /o n > liste.txt


Ce qui en fait liste les fichiers dont l'extension est .ext contenus dans le dossier "dossier" par ordre alphabétique dans un fichier liste.txt

Donc en gros le contenu de liste.txt est le suivant :

fichier1.ext
fichier2.ext
fichier3.ext


alors que je voudrais :


fichier1
fichier2
fichier3


Merci d'avance pour toute aide
A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
31 août 2009 à 08:51
hello
tu peux aussi utiliser la variable %~nI
for /F "delims=" %I in ('dir /b') do @echo %~nI
3
Bonjour,

Il est possible de faire cette opération de façon plus élégante et surtout plus certaine :

@ECHO OFF
DEL liste.txt
FOR /F %%I IN ('DIR .\dossier\*.ext /B /O n') DO ECHO %%~nI >> liste.txt

En effet, l'option de format ~n permet de n'avoir que le nom de fichier sans l'extension.

Le problème de la méthode précédente est que si le nom de fichier contient un "." (par exemple : "fichier.avec.des.points.ext", le nom du fichier sera tronqué (il ne restera que "fichier" dans l'exemple précedent).

J'espère que cela servira à certains.
Cordialement,

Tym
2
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
30 août 2009 à 22:06
Essaye sa
@echo off
for /f "tokens=1 delims=."  %%i in ('dir .\dossier\*.ext /b /o n') do echo %%i >liste.txt


Tien moi au courant !

Bilou.
0
Profil bloqué
30 août 2009 à 22:35
Merci bcp après une légère modif j'ai obtenu ce que je voulais :

@echo off
del liste.txt
for /f "tokens=1 delims=." %%i in ('dir .\dossier\*.ext /b /o n') do echo %%i >>liste.txt


Le code précédent listait les fichiers dans liste.txt mais en écrasant à chaque fois du coup à la fin je n'avais qu'un nom dans liste.txt (le dernier de la liste)
en rajoutant >> à la place de > j'avais tous les noms mais si je relancais le batch cela me relistait les ficheirs déjà présents d'où le rajout d'un petit del pr effacer le fiochier avant d'en créer un nouveau.

Encore merci pr ton aide précieuse
0