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 bucle for, todos los archivos con la extensión flv se repiten, pero quiero realizar algunas acciones con los archivos 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 verdadero novato en lote ...
                    
                        file
                                batch-file
                                
                    
                    
                        Poru
fuente
                
                
            fuente

C:\Users\Admin\Ordner\foo.flvcomo %% ~ nf le daríafoo. Si desea todo excepto la extensión, use %% ~ df %% ~ pf %% ~ nf que le daríaC:\Users\Admin\Ordner\foo%%~dpnfsería una alternativa más corta.%1en un script por lotes.echo %~n1era lo que buscaba.En caso de que el archivo que contiene su variable no exista, el
FORenfoque no funcionará. Un truco que podría usar, si conoce la longitud de la extensión, es tomar una subcadena:los
-4medios que los últimos 4 dígitos (presumiblemente .ext se truncarán).fuente
echo %f:~0,-4%en el contexto del ejemplo utilizado en la pregunta. ¿Qué estoy haciendo mal?SET fl=%%fy luegoecho %fl:~0,-4%También soy un desconocido para cmd de windows, pero intente esto:
fuente
Esta es una respuesta realmente tardía, pero se me ocurrió esto para resolver un problema particular que tuve con DiskInternals LinuxReader agregando '.efs_ntfs' a los archivos que guardó en directorios que no son NTFS (FAT32):
fuente
.encryptedagregó a todos sus archivos, junto con una demanda de rescate. Aparentemente, el script de ataque debe haber sido un archivo por lotes que es el reverso de esto y agregado.encrypteda todos los archivos.Estoy usando esto si simplemente quiero quitar la extensión de una variable (sin repetir ningún directorio o archivo existente):
Si desea quitar la extensión de una ruta completa, use
%%dpnfen su lugar:Ejemplo:
(Usar directamente en la consola)
fuente
Usando cygwin bash para cortar
fuente
Si su variable es un argumento, simplemente puede usar
%~dpnseguido del número del argumento, para que no tenga que preocuparse por las diferentes longitudes de extensión.Por ejemplo
%~dpn0, devolverá la ruta del archivo por lotes sin su extensión,%~dpn1será%1sin extensión, etc.fuente