Pregunta

¿Cómo se itera 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.

¿Fue útil?

Solución

Uso de línea de comando:

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

Actualizar : si el directorio contiene archivos con espacio en los nombres, debe cambiar el delimitador que está usando el comando para / f . 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 usebackq en el para :

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

Y si necesita utilizar la redirección de salida o la canalización de comandos, use el carácter de escape ( ^ ):

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

Otros consejos

Alternativamente, use:

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

El comando forfiles está disponible en Windows Vista y versiones posteriores.

Método más fácil:

Desde la línea de comandos, use:

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

Desde un archivo por lotes (duplicar los signos de porcentaje):

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

Desde un archivo por lotes con la carpeta especificada como primer parámetro:

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

Uso

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

con:

  • la ruta de acceso es la ruta de inicio.
  • %% var es algún identificador.
  • *. * es una máscara de archivo O el contenido de una variable.
  • algún comando_comando se ejecuta con la ruta y var concatenados como parámetros.

Otra forma:

for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top