Como fazer algumas ações para cada arquivo em uma pasta?

1

Eu tenho uma pasta com arquivos com extensão .foo.

Eu preciso de um arquivo em lotes para executar alguns comandos para cada arquivo nessa pasta com essa extensão.

Como devo fazer isso?

Parece que preciso de um loop depois de obter a lista de arquivos, mas não sei como fazer isso em arquivos em lote ... (estou no Windows Xp, mas acho que a resposta seria válida em outro Windows).

    
por Klaim 04.08.2009 / 18:51

2 respostas

4
FOR %%F in (*.foo) DO command %%F

Opera o comando command em cada nome de arquivo como o primeiro argumento.

Lembre-se de que, quando em um arquivo de lote, você deve usar %% , na linha de comando, o acima só usaria % 's único.

Se você precisar do nome do caminho completo ou de obter arquivos recursivamente, use a opção /R do comando for.

Exemplo:

C:\WINDOWS> FOR %F in (*.exe) DO @echo %F

explorer.exe
FramePkg.exe
gsk7bui.exe
hh.exe
IsUninst.exe
NOTEPAD.EXE
notepad1.exe
regedit.exe
slrundll.exe
TASKMAN.EXE
twunk_16.exe
twunk_32.exe
uninst.exe
winhelp.exe
winhlp32.exe

C:\WINDOWS> FOR /R %F in (*.exe) DO @echo %F

C: \ WINDOWS \ explorer.exe
C: \ WINDOWS \ FramePkg.exe
C: \ WINDOWS \ gsk7bui.exe
C: \ WINDOWS \ hh.exe
C: \ WINDOWS \ IsUninst.exe
C: \ WINDOWS \ NOTEPAD.EXE
C: \ WINDOWS \ notepad1.exe
C: \ WINDOWS \ regedit.exe
C: \ WINDOWS \ slrundll.exe
C: \ WINDOWS \ TASKMAN.EXE
C: \ WINDOWS \ twunk_16.exe
C: \ WINDOWS \ twunk_32.exe
C: \ WINDOWS \ uninst.exe
C: \ WINDOWS \ winhelp.exe
C: \ WINDOWS \ winhlp32.exe
... muito mais ...
C: \ WINDOWS \ system32 \ accwiz.exe
C: \ WINDOWS \ system32 \ actmovie.exe
C: \ WINDOWS \ system32 \ ahui.exe
C: \ WINDOWS \ system32 \ alg.exe
C: \ WINDOWS \ system32 \ append.exe
C: \ WINDOWS \ system32 \ arp.exe
C: \ WINDOWS \ system32 \ asr_fmt.exe
C: \ WINDOWS \ system32 \ asr_ldm.exe
... [etc ..]
C: \ WINDOWS \ system32 \ dllcache \ accwiz.exe
C: \ WINDOWS \ system32 \ dllcache \ actmovie.exe
C: \ WINDOWS \ system32 \ dllcache \ admin.exe
C: \ WINDOWS \ system32 \ dllcache \ agentsvr.exe
C: \ WINDOWS \ system32 \ dllcache \ ahui.exe
C: \ WINDOWS \ system32 \ dllcache \ alg.exe
C: \ WINDOWS \ system32 \ dllcache \ append.exe
C: \ WINDOWS \ system32 \ dllcache \ arp.exe
... [e assim por diante ..]

    
por 04.08.2009 / 18:57
1

Você pode usar o loop FOR para executar uma ação em cada arquivo

FOR %%parameter IN (set) DO command 

Como

FOR %%G in ("C:\*") DO echo %%G
    
por 04.08.2009 / 18:57