Batch: listar nombres de archivos sin extensión

Resuelto
Perfil bloqueado -  
 Tym -
Hola,

intento hacer un batch que me permita listar los archivos de una carpeta en un archivo de texto y hacerlo sin su extensión.

Por el momento tengo un código que hace lo que quiero, solo que no sé cómo quitar la extensión de la lista creada.

Mi código actual:

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

Lo que en realidad lista los archivos cuya extensión es .ext contenidos en la carpeta "dossier" por orden alfabético en un archivo liste.txt

Entonces en resumen el contenido de liste.txt es el siguiente:

fichier1.ext
fichier2.ext
fichier3.ext

mientras que yo quisiera:

fichier1
fichier2
fichier3

Gracias de antemano por cualquier ayuda
Configuración: Pentium Core 2 Duo E6550 o/c @ 3.75GHz CM ASUS P5K CG Geforce 8800GTS 256Mb DDR3 2Go RAM Kingston HyperX PC2-8500 @ 1066MHz Caja Advance Turboost Black

4 respuestas

  1. dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 660
     
    hola
    también puedes usar la variable %~nI
    for /F "delims=" %I in ('dir /b') do @echo %~nI
    3
  2. Tym
     
    Hola,

    Es posible realizar esta operación de forma más elegante y, sobre todo, más segura:

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

    De hecho, la opción de formato ~n permite obtener solo el nombre del archivo sin la extensión.

    El problema del método anterior es que si el nombre del archivo contiene un "." (por ejemplo: "archivo.con.puntos.ext"), el nombre del archivo quedará truncado (solo quedará "archivo" en el ejemplo anterior).

    Espero que esto sirva a alguien.

    Cordialmente,

    Tym
    2
  3. cs-bilou Mensajes publicados 836 Estado Miembro 164
     
    Prueba esto
    @echo off for /f "tokens=1 delims=." %%i in ('dir .\dossier\*.ext /b /o n') do echo %%i >liste.txt


    ¡Manténme informado!

    Bilou.
    --
    Hay días en que no hay que buscarme.
    Y hay días todos los días!
    0
  4. Perfil bloqueado
     
    Muchas gracias, después de un ligero ajuste obtuve lo que quería:

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

    El código anterior listaba los archivos en lista.txt pero al escribir siempre sobrescribía, así que al final solo tenía un nombre en lista.txt (el último de la lista). Al usar >> en lugar de > tenía todos los nombres, pero si volvía a ejecutar el batch volvía a listar los archivos ya presentes, por eso el pequeño del que borra el fichero antes de crear uno nuevo.

    Gracias de nuevo por tu ayuda valiosa.
    0