Como usar o Batch File For Loop para processar arquivos e pastas?
Um dos usos comuns do arquivo em lote para loops é processar arquivos e pastas em massa. Por exemplo, talvez você queira renomear, excluir ou mover vários arquivos ou pastas em um padrão específico. Para fazer isso, você pode usar algumas das opções adicionais disponíveis para loops for, como:
- /F para processar arquivos de texto ou resultados de outros comandos.
- /R para processar subpastas de forma recursiva.
- /D para processar apenas diretórios.
Aqui está a sintaxe do arquivo em lote do loop for com essas opções adicionais:
FOR /F ["options"] %%parameter IN (set) DO command
Onde:
- [“options”] são opções adicionais que podem ser usadas para controlar como o loop for processa arquivos de texto ou resultados de comandos. Algumas opções comumente usadas são:
FOR /R [[drive:]path] %%parameter IN (set) DO command
Onde:
- [[drive:]path] é o diretório inicial a ser processado pelo loop. Se não for especificado, será usado o diretório atual.
- (set) é o conjunto de arquivos a ser processado pelo loop. Esse conjunto deve ser um padrão de correspondência de arquivos (file globbing), como *.txt ou ?.bat. Se esse conjunto estiver vazio, todos os arquivos serão processados.
FOR /D %%parameter IN (set) DO command
Onde:
- (set) é o conjunto de diretórios a serem processados pelo loop. Esse conjunto deve ser um padrão de correspondência de arquivos (file globbing), como * ou ? Se esse conjunto estiver vazio, todos os diretórios serão processados.
Exemplo:
FOR /F "skip=1 delims=," %%A IN (data.csv) DO ECHO %%A
O comando acima pulará a primeira linha do arquivo data.csv, que normalmente contém os títulos das colunas, e exibirá o valor da primeira coluna de cada linha subsequente, separada por vírgulas.
FOR /F "tokens=1,2* usebackq" %%A IN ("file name.txt") DO ECHO %%A %%B %%C
O comando acima processará um arquivo de texto cujo nome contém espaços e exibirá o primeiro, o segundo e os valores restantes da coluna de cada linha, separados por espaços ou tabulações.
FOR /R C:\Users\ %%D IN (*.jpg) DO COPY %%D D:\Backup\
O comando acima procurará todos os arquivos com a extensão .jpg no diretório C:\Users\ e seus subdiretórios e os copiará para o diretório D:\Backup.
FOR /D %%E IN (*) DO RMDIR /S /Q %%E
O comando acima excluirá todos os diretórios e seus conteúdos no diretório atual.
Como usar o Batch File For Loop para acessar informações de arquivos e pastas?
Além de processar arquivos e pastas com o arquivo em lote para loop, você também pode acessar informações sobre eles, como nome, extensão, tamanho, data de modificação, atributos e caminho.
Para fazer isso, você pode usar modificadores de caminho em variáveis de loop. Um modificador de caminho é um caractere especial que pode ser adicionado após o sinal de porcentagem (%) em uma variável de loop para alterar o valor dessa variável.
Aqui estão algumas modificações de caminho comumente usadas:
- %~fparameter para exibir o caminho completo de um arquivo ou pasta.
- %~nparameter` para exibir nomes de arquivos ou pastas sem extensões.
- %~xparameter para exibir extensões de arquivos ou pastas.
- %~sparameter para exibir o caminho curto de um arquivo ou pasta, o que é útil se o caminho contiver espaços.
- %~zparameter para exibir o tamanho do arquivo ou da pasta em bytes.
- %~tparameter para exibir a data e a hora da modificação do arquivo ou da pasta.
- %~aparameter para exibir atributos de arquivos ou pastas, como R (somente leitura), H (oculto), S (sistema) etc.
Exemplo:
FOR %%F IN (*.txt) DO ECHO %%F %%~nF %%~xF %%~sF %%~zF %%~tF %%~aF
O comando acima exibirá informações sobre todos os arquivos de texto no diretório atual, como nome, extensão, caminho curto, tamanho, data de modificação e atributos.