Batch : lister noms de ficheirs sans extensio

Résolu
Profil bloqué -  
 Tym -
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
Configuration: Pentium Core 2 Duo E6550 o/c @ 3.75GHz
CM ASUS P5K
CG  Geforce 8800GTS 256Mo DDR3
2Go RAM Kingston HyperX PC2-8500 @ 1066MHz
Boîtier Advance Turboost Black

4 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    tu peux aussi utiliser la variable %~nI
    for /F "delims=" %I in ('dir /b') do @echo %~nI
    3
  2. Tym
     
    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
  3. cs-bilou Messages postés 836 Statut Membre 164
     
    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
  4. Profil bloqué
     
    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