Programa ou script para percorrer a estrutura de diretórios, com base no meu loop

1

Eu tenho o seguinte loop e gostaria de ajuda para expandir sua funcionalidade.

for /D %d in (*.*) do "c:\Program Files (x86)-Zipz.exe" a -tzip "%d.zip" ".\%d\*"

Atualmente, em uma estrutura de diretórios, como abaixo:

Arquivos de registro > Ano > Mês > Dia > Horas

Eu navego manualmente para o diretório Day , executo meu loop 'for' na linha de comando do Windows e meu loop cria diretórios zipados de cada diretório ' Hour ' sob escolhido Dia . Depois, navego manualmente para o próximo Day e repito, até ter fechado todo o Month .

O ambiente é Server 2003, eu posso usar SOMENTE Prompt de Comando (sem PowerShell ou escopo para instalação) e não posso usar 'soluções' de terceiros.

Q1: Posso automatizar isso por exemplo? Mês ou mesmo ano nível, preservando o zurrar HOURLY , como isso é o ponto inteiro ...?

Q2: atualmente migro os arquivos por hora compactados para o armazenamento a frio manualmente - a estrutura de diretório no destino é ligeiramente diferente daquela na origem. Existe algum espaço para automatizar isso também?

Agradecemos antecipadamente por suas sugestões

    
por vixbix 23.07.2016 / 12:44

1 resposta

0

Q1: Posso automatizar isso em, por exemplo, Mês ou mesmo ano nível

preserving the HOURLY zipping, as that is the whole point...?

A maneira de automatizar isso é usar os loops for aninhados.

A solução abaixo é para o nível do mês. Use a mesma abordagem com outro nível de aninhamento para uma solução no nível do ano.

Execute o seguinte arquivo de lote (RecurseDays.cmd) na pasta Month de sua escolha:

@echo off
rem start in a month folder and loop through the days
for /d /r %%d in (*) do (
  rem for each day, change directory to the day
  pushd %%d
  rem loop through the hours
  for /d %%h in (*) do (
    rem zip the hour
    echo "c:\Program Files (x86)-Zipz.exe" a -tzip "%%h.zip" ".\%%h\*"
    )
  rem done with the day, change directory back to the month
  popd
  )

Notas:

  • Remova o echo do comando 7z quando estiver satisfeito com os arquivos em lote conforme o esperado.

Q2: atualmente migro os arquivos por hora compactados para o armazenamento a frio manualmente

the directory structure at the destination is slightly different to that at the source. Is there any scope to automate that as well?

Você pode usar robocopy . O lugar certo seria logo depois:

  rem done with the day, change directory back to the month

Aqui você pode migrar todos os arquivos de hora de todos os dias do mês em que você está. robocopy preservará a estrutura de diretórios e também tem a opção de mover os arquivos zip se isso for desejado (em vez de copiando-os).

Veja o link abaixo para mais informações.

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • para / d - Realize condicionalmente um comando em vários diretórios / pastas.
  • pushd - Altere o diretório / pasta atual e armazene a pasta / caminho anterior para uso pelo comando POPD.
  • popd - Altere o diretório de volta para o caminho / pasta armazenado mais recentemente pelo comando PUSHD.
  • robocopy - Cópia robusta de arquivos e pastas.
por 23.07.2016 / 17:07