Lote: Eliminar extensión de archivo

Tengo el siguiente script por lotes de Wikipedia:

@echo off for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do ( echo %%f ) pause 

En el for-loop, todos los archivos con la extensión flv se hacen eco, pero quiero hacer algunas acciones con el archivo (s) donde necesito una vez el archivo sin la extensión y una vez con la extensión. ¿Cómo podría obtener estos dos?

Busqué soluciones pero no encuentro ninguna. Soy un novato real en lote …

Puede usar %%~nf para obtener el nombre de archivo solo como se describe en la referencia de for :

 @echo off for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do ( echo %%~nf ) pause 

Las siguientes opciones están disponibles:

 Variable con modificador Descripción

 % ~ I ​​expande% I, lo que elimina cualquier entorno 
                         comillas ("").
 % ~ fI Expande% I a un nombre de ruta completamente calificado.
 % ~ dI Expande% I a una letra de unidad solamente.
 % ~ pI Expande% I a una ruta solamente.
 % ~ nI Expande% I a un nombre de archivo solamente.
 % ~ xI Expande% I a una extensión de archivo solamente.
 % ~ sI expande la ruta para contener solo nombres cortos.
 % ~ aI Expande% I a los atributos de archivo del archivo.
 % ~ tI Expande% I a la fecha y hora del archivo.
 % ~ zI Expande% I hasta el tamaño del archivo.
 % ~ $ PATH: busco en los directorios enumerados en el entorno PATH 
                         variable y expande% I al nombre completo de 
                         el primero encontrado.  Si el nombre de la variable de entorno es 
                         no definido o el archivo no es encontrado por la búsqueda,
                         este modificador se expande a la cadena vacía.    

En caso de que no exista realmente el archivo que contiene su variable, el enfoque FOR no funcionará. Un truco que podría usar, si conoce la longitud de la extensión, es tomar una subcadena:

 %var:~0,-4% 

el -4 significa que los últimos 4 dígitos (presumiblemente .ext ) se truncarán.

También soy un extraño para windows cmd, pero prueba esto:

 echo %%~nf 

Esta es una respuesta muy tardía, pero se me ocurrió esto para resolver un problema particular que tenía con DiskInternals LinuxReader que agregaba ‘.efs_ntfs’ a los archivos que guardaba en directorios que no eran NTFS (FAT32):

 @echo off REM %1 is the directory to recurse through and %2 is the file extension to remove for /R "%1" %%f in (*.%2) do ( REM Path (sans drive) is given by %%~pf ; drive is given by %%~df REM file name (sans ext) is given by %%~nf ; to 'rename' files, move them copy "%%~df%%~pf%%~nf.%2" "%%~df%%~pf%%~nf" echo "%%~df%%~pf%%~nf.%2" copied to "%%~df%%~pf%%~nf" echo. ) pause