Como posso compactar grupos de arquivos com base nos primeiros x caracteres do nome do arquivo?


1

Eu tenho um único diretório no qual os arquivos de log são despejados, desta maneira:

20160701_file001.log
20160701_file002.log
20160702_file001.log
...
20160801_file001.log
20160801_file002.log
20160801_file003.log
...

Você poderia avisar sobre um único loop que poderia ser executado no diretório pai no Prompt de Comando, que compactaria todos os arquivos apenas para 201607, nomeando o arquivo zip (que estaria localizado no mesmo local) usando o nome do arquivo mais antigo para ser zipado?

Isso daria 31 arquivos para julho, pois cada dia teria seu próprio arquivo ZIP (tentar compactar todos eles resulta em um erro 'arquivos demais para compactar').

EDIT: Parece que minha etiqueta de superusuário ainda não está correta, pois estou recebendo comentários em todo o site do mesmo usuário, apontando-me para os muitos documentos 'Como ...' publicados .. Desculpas a todos!

Por favor, encontre o script que estou usando abaixo - isso apenas fecha um dia de cada vez e estou procurando ajuda para adaptá-lo para, por exemplo, fazer um mês inteiro de arquivos de log localizados no mesmo diretório.

7z.exe a -tzip 20160731_file001.log.zip 201607*_file*.log

2
Sim, mas ... observe que o Superusuário não é um serviço gratuito de criação de scripts / códigos. Se você nos contar o que tentou até o momento (inclua os scripts / códigos que você já está usando) e o local em que está preso, podemos tentar ajudar com problemas específicos. Você também deve ler Como faço uma boa pergunta? .
DavidPostill

Obrigado pelas dicas @DavidPostill - Eu alterada a pergunta a se comunicar melhor o assunto em questão ..
vixbix

Sua pergunta ainda não está clara. 1 /. "Isso forneceria 31 arquivos para julho, pois cada dia teria seu próprio arquivo ZIP" e 2 / "usando o nome do arquivo mais antigo a ser compactado" não são possíveis ao mesmo tempo. 31 arquivos não podem ter todos o mesmo nome.
DavidPostill

O 7zip não possui uma função de exclusão ou movimentação, portanto, você precisa escrever um lote para solucionar essa lacuna de recursos. Você pode compactar o mês atual facilmente usando a variável date no DOS. No entanto, não é fácil executar um arquivo em lotes em 1º de agosto, desejando compactar o mês anterior ... O DOS não é tão inteligente ... community.spiceworks.com/scripts/show/… ... para fechar manualmente, apenas uso 7za a 201607 201607*.log<- isso deve compactar todos os seus arquivos de log de julho em um arquivo zip.
Sun
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.