Pergunta

Como você iterar sobre cada arquivo em um diretório com um .bat ou .cmd?

Para simplificar forneça uma resposta que apenas ecos o nome do arquivo ou caminho de arquivo.

Foi útil?

Solução

uso de linha de comando:

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

uso do arquivo de lote:

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

Atualizar : se o diretório contém arquivos com espaço nos nomes, você precisa mudar o delimitador do comando for /f está usando. por exemplo, você pode usar o caractere pipe.

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

Update 2 : (rápida de um ano e meio após a resposta original :-)) Se o próprio nome do diretório tem um espaço no nome, você pode usar a opção usebackq na for:

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

E se você precisa usar o redirecionamento de saída ou a tubulação de comando, use o caractere de escape (^):

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

Outras dicas

Como alternativa, use:

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

O comando forfiles está disponível no Windows Vista e para cima.

O método mais fácil:

na linha de comando, use:

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

A partir de um arquivo de lote (dobrar os sinais% por cento):

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

A partir de um arquivo em lotes com a pasta especificada como 1º parâmetro:

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

Use

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

com:

  • caminho de ser o caminho inicial.
  • %% sendo var algum identificador.
  • *. * Sendo um filemask ou o conteúdo de uma variável.
  • algum_comando sendo o comando a ser executado com o caminho e var concatenados como parâmetros.

Outra forma:

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

Eu tive algum malware que marcou todos os arquivos em um diretório como oculto / system / readonly. Se alguém encontra-se nesta situação, cd para o diretório e executar for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top