У меня есть папка, в которой, помимо прочего, есть папки, названные в честь дат, например, 20110908, 20110909 и так далее. Каждую ночь я хотел бы запускать инструмент, который проверяет все папки, соответствующие этой маске даты (может быть 201 *), и bzip2 любую из них, у которой еще нет архива bzip2 с аналогичным именем. И в идеале, если после bzip2-ing содержимое папки изменится, я хотел бы повторно bzip2 их.

Есть ли инструмент, который помог бы мне?

2 ответа2

1

Версия командной строки 7-Zip может помочь вам здесь. Вы можете создать пакетный файл, который вы планируете, используя Task Scheduler. Вы хотели бы использовать переключатель обновления 7-Zip "U". Сценарий, подобный следующему, может сработать:

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

)

Если вы можете обойтись без использования формата zip или 7z, то можете пропустить шаги «извлечение, затем повторное сжатие» и просто запустить шаг обновления.

0

Я прибег к использованию Python с bzip2.exe для 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()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .