Como usar o For Loop do arquivo em lote para criar caminhos relativos?
Um dos desafios que você pode enfrentar ao usar um arquivo em lote para loop é como criar um caminho relativo do arquivo ou pasta processado pelo loop. Um caminho relativo é um caminho que não contém o nome da unidade ou do diretório inicial, mas apenas uma parte de um caminho diferente do diretório atual.
Por exemplo, se o diretório atual for C:\Users\Alice\Documents, então o caminho relativo do arquivo C:\Users\Alice\Pictures\image.jpg é …\Pictures\image.jpg.Por exemplo, se o diretório atual for C:\Users\Alice\Documents, então o caminho relativo do arquivo C:\Users\Alice\Pictures\image.jpg é …\Pictures\image.jpg.
A criação de caminhos relativos pode ser útil se você quiser mover, copiar ou renomear arquivos ou pastas para um local diferente, mas manter a estrutura de diretórios original. Por exemplo, você pode querer mover todos os arquivos de texto do diretório C:\Users\Alice\Documents e seus subdiretórios para o diretório D:\Backup, mas manter os subdiretórios.
Para criar caminhos relativos com arquivos batch for loop, você pode usar algumas das técnicas a seguir:
- Usa a variável de ambiente “CD” para obter o diretório atual e a remove do caminho completo do arquivo ou da pasta usando o comando “SET”.
- Use a opção /V:ON para ativar a expansão de variável atrasada e use um ponto de exclamação (!) como delimitador de variável em vez de um sinal de porcentagem (%). Isso é útil se você quiser alterar o valor de uma variável em um loop.
- Usa os comandos “PUSHD” e “POPD” para alterar o diretório atual durante o loop e usa um ponto (.) para se referir ao diretório atual.
Exemplo:
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION FOR /R C:\Users\Alice\Documents %%G IN (*.txt) DO ( SET "source=%%G" SET "destination=!source:%CD%=!" ECHO !destination! ) ENDLOCAL
O comando acima procurará todos os arquivos de texto no diretório C:\Users\Alice\Documents e seus subdiretórios e exibirá seus caminhos relativos a partir do diretório atual. Por exemplo, se o diretório atual for C:\Users\Alice\Documents, então o caminho relativo do arquivo C:\Users\Alice\Documents\Folder1\File1.txt é Folder1\File1.txt.
@ECHO OFF FOR /R C:\Users\Alice\Documents %%H IN (*.txt) DO ( PUSHD "%%~dpH" SET "source=%%H" SET "destination=%CD%\%%~nxH" ECHO %destination% POPD )
O comando acima procurará todos os arquivos de texto no diretório C:\Users\Alice\Documents e seus subdiretórios e exibirá o caminho completo usando o diretório atual como prefixo. Por exemplo, se o diretório atual for D:\Backup, então o caminho completo do arquivo C:\Users\Alice\Documents\Folder1\File1.txt é D:\Backup\Folder1\File1.txt.
Conclusão
O loop for do arquivo de lote é um recurso muito útil para criar arquivos de lote mais eficientes e flexíveis. Ao usar um loop for, você pode repetir um comando específico para cada elemento de um conjunto de dados, como uma lista de valores, um intervalo de números ou o resultado de outro comando.
Você também pode usar algumas das opções adicionais disponíveis para loops for, como /F, /R e /D, para processar arquivos de texto, subpastas ou diretórios. Além disso, você também pode acessar informações sobre os arquivos e pastas processados pelo loop, como nome, extensão, tamanho, data de modificação, atributos e caminho, usando a modificação de caminho nas variáveis de loop.
Por fim, você também pode criar um caminho relativo dos arquivos e pastas processados pelo loop, usando várias técnicas, como remover o diretório atual do caminho completo, ativar a expansão retardada de variáveis ou alterar o diretório atual durante o loop.
Esperamos que este artigo seja útil para aqueles que desejam saber mais sobre arquivos em lote para loops no Windows. Se você tiver alguma dúvida ou sugestão, deixe um comentário abaixo. Obrigado pela leitura.