¿Cómo iterar sobre cada archivo en un directorio con un archivo .bat o .cmd?
Para simplificar, proporcione una respuesta que solo haga eco del nombre del archivo o la ruta del archivo.
Uso de línea de comando:
for /f %f in ('dir /b c:\') do echo %f
Uso de archivos por lotes:
for /f %%f in ('dir /b c:\') do echo %%f
Actualización : si el directorio contiene archivos con espacio en los nombres, debe cambiar el delimitador que for /f
usa el comando. por ejemplo, puedes usar el char de tubería.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
Actualización 2 : (rápido un año y medio después de la respuesta original :-)) Si el nombre del directorio tiene un espacio en el nombre, puede usar la usebackq
opción en for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
Y si necesita usar la redirección de salida o la tubería de comando, use el escape char ( ^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
necesario después delfor
? Según los documentos de ayuda, la/f
bandera se abre y lee cada archivo. ¿Es necesario hacer eco o cambiar el nombre de los archivos?/f
after loFOR
restringe a los archivos. Del mismo modo, se/d
restringe a los directorios (carpetas) y le/r
indica que sea recursivo.'dir /b "c:\program files"'
que debería ser`dir /b "c:\program files"`
Alternativamente, use:
El comando forfiles está disponible en Windows Vista y versiones posteriores.
fuente
Método más fácil:
Desde la línea de comandos, use:
Desde un archivo por lotes (duplicar los signos de porcentaje):
Desde un archivo por lotes con la carpeta especificada como primer parámetro:
fuente
dir /B
salida confor
.Utilizar
con:
fuente
%%var was unexpected at this time.
¿Puedes dar un ejemplo exacto?for /r . %%var in (*.*) do echo %%var
De otra manera:
fuente
"%~nf"
representa el nombre del archivo sin extensión, dondef
es el nombre de la variable especificada enfor
parte. Documentos: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…Tenía un malware que marcaba todos los archivos en un directorio como oculto / system / readonly. Si alguien más se encuentra en esta situación, cd en el directorio y ejecutar
for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
.fuente