Cómo hacer algo con cada archivo en un directorio con un script por lotes
Cómo iterar sobre cada archivo en un directorio con a .bat or .archivo cmd?
Para simplificar, proporcione una respuesta que se haga eco del nombre del archivo o la ruta del archivo.
6 answers
Uso de la línea de comandos:
for /f %f in (`dir /b c:\`) do echo %f
Uso del 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á utilizando el comando for /f
. por ejemplo, puede 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 en sí tiene un espacio en el nombre, puede usar la opción usebackq
en el for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
Y si necesita usar redirección de salida o tubería de comandos, utilice el carácter de escape (^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-07 20:58:26
Alternativamente, use:
forfiles /s /m *.png /c "cmd /c echo @path"
El comando forfiles está disponible en Windows Vista y Windows 7.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-18 23:22:13
Método más fácil:
Desde la Línea de Comandos, use:
for %f in (*.*) do echo %f
De un archivo por lotes (duplica los signos % percent):
for %%f in (*.*) do echo %%f
De un archivo por lotes con una carpeta especificada como 1er parámetro:
for %%f in (%1\*.*) do echo %%f
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-25 17:47:29
Use
for /r path %%var in (*.*) do some_command %%var
Con:
- path es la ruta inicial.
- %%var es algún identificador.
- *.* ser una máscara de archivo O el contenido de una variable.
- some_command es el comando a ejecutar con la ruta y var concatenado como parámetros.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-07 22:56:57
Otra manera:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-22 09:01:31
Tenía algún malware que marcaba todos los archivos en un directorio como hidden/system/readonly. Si alguien más se encuentra en esta situación, haga un cd en el directorio y ejecute for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-14 21:30:20