2008-10-07 19 views

Respuesta

302

Comando uso de la línea:

for /f %f in (`dir /b c:\`) do echo %f 

Uso de archivo por lotes:

for /f %%f in (`dir /b c:\`) do echo %%f 

actualización: si el directorio contiene archivos con el espacio en los nombres, es necesario cambiar el delimitador el comando for /f esta usando. por ejemplo, puede usar el char de tubería.

for /f "delims=|" %%f in ('dir /b c:\') do echo %%f 

Actualización 2: (rápida de un año y medio después de la respuesta original :-)) Si el nombre del directorio en sí tiene un espacio en el nombre, se puede utilizar la opción usebackq en el for:

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f 

Y si tiene que utilizar la reorientación o la tubería del sistema, utilice el carbón de escape (^):

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f 
+0

Intenté enumerar los archivos en un directorio actual con este comando [para/f %% f in ('dir/b.') do echo %% f] ... Desafortunadamente, los archivos con espacios tuvieron su nombre impreso en su primer espacio ...? Gracias –

+1

Al menos para algunos comandos, la variable del archivo debe estar entre comillas dobles. – Jirka

+0

Esto también es útil: Cómo hacer varias cosas para cada archivo en un directorio con un script por lotes http://stackoverflow.com/questions/2304867/how-to-do-multiple-things-to-each-file-in -a-directory-with-a-batch-script? lq = 1 – Snekse

29

Uso

for /r path %%var in (*.*) do some_command %%var 

con:

  • camino de ser el camino de salida.
  • %% var es un identificador.
  • *. * Siendo una máscara de archivo O el contenido de una variable.
  • siendo un_comando el comando para ejecutar con la ruta y var concatenado como parámetros.
+1

Me sale el error: '%% var fue inesperado en este momento. ¿Puedes dar un ejemplo exacto? Intenté un montón de variaciones de 'for/r. %% var in (*. *) do echo %% var' – hippietrail

+3

Por alguna extraña razón, el nombre de la variable está restringido a un carácter. – ollb

+1

¿Podemos usar diferentes emoticonos para diferentes resultados? –

75

Como alternativa, utilice:

forfiles /s /m *.png /c "cmd /c echo @path" 

El comando forfiles está disponible en Windows Vista y Windows 7.

+0

fue difícil usar caminos con espacios en el segundo cmd. Al final ajusté% PATH% env var para hacer el trabajo. Pero gracias. útil – twobob

-2

tuve algunos programas maliciosos que marcó todos los archivos en un directorio como ocultos/sistema/sólo lectura . Si alguien más se encuentra en esta situación, cd en el directorio y ejecute for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f.

38

método más fácil:

desde línea de comandos, utilice:

for %f in (*.*) do echo %f 

de un archivo por lotes (duplicar las señales% por ciento):

for %%f in (*.*) do echo %%f 

de un archivo por lotes con la carpeta especificado como primer parámetro:

for %%f in (%1\*.*) do echo %%f 
+5

no solo más fácil, sino también significativamente más elegante en comparación con la evaluación de la salida 'dir/B' con' for'. –

+3

Agregar a/r antes de los subdirectorios% f to recurse – PRMan

1

para% f en (* .mp4) llame a ffmpeg -i "% ~ f" -vcodec copia -acodec copia "% ~ nf.avi"

Cuestiones relacionadas