Manter diretórios bzip2ed no Windows

0

Eu tenho uma pasta que, além de outras coisas, tem pastas nomeadas após datas, por exemplo 20110908 20110909 e assim por diante. Toda noite, eu gostaria de executar uma ferramenta que verifica todas as pastas que combinam com essa datamask (poderia ser 201 *) e bzip2 com qualquer uma delas que ainda não tenha um arquivo bzip2 com nome similar. E, idealmente, se depois do bzip2-ing o conteúdo da pasta mudar, eu gostaria de re-bzip2-los.

Existe uma ferramenta que me ajudaria?

    
por Cookie 09.09.2011 / 07:49

2 respostas

0

Eu usei o python com bzip2.exe para o Windows.

#!/usr/bin/env python
import os
import subprocess

rootdir = "C:/XXX/"
for root, subFolders, files in os.walk(rootdir):
    for file in files:
    filename = os.path.join(root,file)
    if(os.path.splitext(filename)[1] != ".bz2"):
        print("Compressing "+filename+"...")
        process=subprocess.Popen('bzip2.exe %s'%(filename),shell=True)
        process.wait()
    
por 27.07.2012 / 09:04
1

A versão de linha de comando do 7-Zip pode ajudá-lo aqui. Você pode criar um arquivo de lote que você programa usando o Agendador de Tarefas. Você gostaria de usar o botão de atualização "u" do 7-Zip. Um script como o seguinte pode fazer o truque:

for /f %%F IN ('dir /b 201*') (

    REM Extract
    7z e %F.tar.bz2 %F.tar

    REM Update archive
    7z u %F.tar -uq2r2y2z2w2 %F

    REM Compress
    7z a %F.tar.bz2 %F.tar

    REM Delete tar
    del %F.tar

)

Se você conseguir usar o formato zip ou 7z, poderá pular as etapas "extrair e recomprimir" e simplesmente executar a etapa de atualização.

    
por 10.09.2011 / 05:44