Me encontré con un pequeño inconveniente tratando de obtener solo los nombres de archivo (sin extensiones o rutas de archivos) de forma recursiva. Esto funcionó para mí en la carpeta raíz:
dir /b
Pero cuando agregué / s para escanear de forma recursiva, también obtuve rutas de archivo antes de los nombres de archivo que no quiero. ¿Hay alguna manera de obtener nombres de archivo desnudos de todas las subcarpetas en un directorio?
Estoy en Windows 7 x64, prefiero usar el símbolo del sistema regular, no PS o VBS
Prueba esto:
Más información sobre cómo funciona y qué está haciendo, escriba
for /?
fuente
>> filename.txt
o
asumiendo un archivo
noquotes.bat
en su % PATH% con este contenidoenfoque for / r explicado
for /r
recorre el directorio actual de forma recursiva (puede especificar un directoriofor /r drive:\path\
, se asume el directorio actual) y ejecuta el comando especificado por do para cada archivo que coincida en el conjunto(*)
. El conjunto(.)
solo coincidiría con los directorios. @echo% ~ ni Este comando funciona tal cual desde el indicador. Duplique sus presupuestos si lo coloca dentro de un archivo por lotes. es decirfor /r %%i in (*) do @echo %%~ni
enfoque explicado de los archivos
/s
enumera los subdirectorios actuales y todos/c
ejecuta el comando dentro de las comillas@isdir
y@fname
es un símbolo emitido en la cadena de comandosEl archivo de lote adicional
noquotes.bat
ayuda al eliminar las comillas dobles con% ~ 1 (parámetro 1)forfiles
también le permite especificar una ruta para comenzar enforfiles /P C:\Windows ...
fuente
Enumere todos los archivos, desnudos, recursivamente, utilizando atributos (no directorio) (solo archivos)
dir / B / S / A: -D
C: \ prueba \ caché> dir / B / S / A: -D
C: \ test \ cache \ 7 \ 0f \ 7b50ed0522645513da90345120eaf0f7 C: \ test \ cache \ d \ 23 \ 814644aa6a8195c91e54d2f7bb64e23d
fuente
dir /b /s
] escanear de forma recursiva, también obtuve rutas de archivo antes de los nombres de archivo, lo que no quiero ". Entonces, le está diciendo al OP que intente una variación trivial de lo que ya han intentado, y su respuesta demuestra que produce el mismo resultado que cuando el OP lo intentó (es decir, no lo que quieren).