Пакетный файл - нужна альтернатива 7-zip - не может двигаться

Пожалуйста, смотрите обновленный ответ ниже

Пакетные файлы Windows.

Я очень люблю 7-Zip и прекрасно работает, но мне нравится способность WinZip перемещать файлы и метки времени. Однако WinZip (интерфейс командной строки) имеет ограничения, например, для размера файлов и количества файлов в архиве.

Погуглив, мы видим, что есть человек, который взял код 7-zip и заново скомпилировал код для использования ключа -m (move). Тем не менее, я не чувствую себя комфортно при использовании сторонней разработки от разработчика 7-zip в нашей производственной среде.

Кроме того, я видел - http://alternativeto.net/software/7-zip/

Я кодировал: ЕСЛИ НЕ ОШИБКА 1 (после процесса Zip), чтобы удалить файл, но это не может быть безопасно, если существует несколько с одинаковой структурой имени файла.

Вот несколько примеров кода: 7zip:

D:\scripts\7za -tzip -y a D\zips\20140116_someclient_%computername%@%location%.zip D:\logs\apache_log.2014-01-16* >nul >>%logfile%
IF NOT ERRORLEVEL 1 ECHO Y|DEL D:\logs\apache_log.2014-01-16*

Где apache_log.2014-01-16 может быть:

apache_log.2014-01-16.1
apache_log.2014-01-16.2
apache_log.2014-01-16.3

и т.п.

WinZip

c:\progra~1\WinZip\Wzzip.exe -T -ex -m D\zips\20140116_someclient_%computername%@%location%.zip D:\logs\some_file.2014-01-16* >nul >>%logfile%

Я думаю, с точки зрения требований к программному обеспечению, я хотел бы иметь некоторые возможности WinZip в 7Zip. Мне нравится 7Zip, так как он имеет возможность работать с большими архивами. Мне нравится PeaZip, и я использовал PowerArchiver много месяцев назад. У меня проблема в том, что я работаю с Apache Tomcat для Windows, и нам приходится архивировать почасовые журналы, которые могут занимать более 200-300 МБ в час, и на серверах не должно быть старых журналов.

Надеюсь, что это имеет больше смысла.

ОБНОВИТЬ:

Верите, что я ответил на свой вопрос..

FOR /F %%F IN ('dir /B "D:\serverlogs\server.log.2014-01-19*"') DO (
D:\work\scripts\7za.exe –tzip –y a "D:\ziplogs\201401109_COMPANY_SERVERNAME@DATACENTER.ZIP" >> D:\WORK\SCRIPTS\LOGS\LOG_20140120.LOG && DEL "D:\serverlogs\%%F"
)

Который это работает хорошо сейчас.

2 ответа

Решение

Последние альфа-версии 7-Zip поддерживают новый ключ "-sdel" для удаления файлов после включения в архив.

На 7z Обсуждении вы можете найти сумасшедший пакетный способ замены отсутствующего удаления после переключения архива Энди здесь: http://sourceforge.net/p/sevenzip/discussion/45797/thread/5bf7022b/

@ECHO off
echo ################################################
echo Zipping up Backups with 7-Zip
cd e:\gh\backups
7z.exe a %DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%_DB1-Prod.7z
    IF  "%errorlevel%"=="0" (goto testzips) ELSE (goto zipfail)
:testzips
echo ################################################
echo Testing Integrity of Zipfile
FOR %%i IN (*.7z) DO 7z.exe t %%i
    IF "%errorlevel%"=="0" (goto extract) ELSE (goto testzipfail)
:extract
echo ################################################
Echo Extracting files to temp folder
FOR %%i IN (*.7z) DO 7z.exe e %%i -oe:\gh\temp
IF  "%errorlevel%"=="0" (goto movezip) ELSE (goto errorextract)
:movezip
echo ################################################
echo Moving Zipped File to Archive Folder
move e:\gh\Backups\*.7z e:\gh\Archives
IF  "%errorlevel%"=="0" (goto testfiles) ELSE (goto archivemovefail)
:testfiles
echo ################################################
fc /b e:\gh\backups\*.4BS e:\gh\temp\*.4BS 
IF ERRORLEVEL 0 (goto testfile4BL) else (goto comparealert)
:testfile4BL
fc /b e:\gh\backups\*.4BL e:\gh\temp\*.4BL
IF ERRORLEVEL 0 (goto testfile4BK) else (goto comparealert)
:testfile4BK
fc /b e:\gh\backups\*.4BK e:\gh\temp\*.4BK
IF ERRORLEVEL 0 (goto testfile4BR) else (goto comparealert)
:testfile4BR
fc /b e:\gh\backups\*.4BR e:\gh\temp\*.4BR
IF ERRORLEVEL 0 (goto copytonas) else (goto comparealert)
:: IF ERRORLEVEL 1 (goto copytonas) ELSE (goto comparealert)
:copytonas
echo ################################################
echo Copying archive to Fileserver
robocopy e:\gh\Archives \\fileserver\backups /NP /MAXAGE:1
REM IF "%errorlevel%"=="1" (goto cleanup) ELSE (goto nascopyalert)
    if errorlevel 16 echo ***FATAL ERROR*** & goto nascopyalert
    if errorlevel 15 echo OKCOPY + FAIL + MISMATCHES + XTRA & goto nascopyalert
    if errorlevel 14 echo FAIL + MISMATCHES + XTRA & goto nascopyalert
    if errorlevel 13 echo OKCOPY + FAIL + MISMATCHES & goto nascopyalert
    if errorlevel 12 echo FAIL + MISMATCHES& goto nascopyalert
    if errorlevel 11 echo OKCOPY + FAIL + XTRA & goto nascopyalert
    if errorlevel 10 echo FAIL + XTRA & goto nascopyalert
    if errorlevel 9 echo OKCOPY + FAIL & goto nascopyalert
    if errorlevel 8 echo FAIL & goto nascopyalert
    if errorlevel 7 echo OKCOPY + MISMATCHES + XTRA & goto nascopyalert
    if errorlevel 6 echo MISMATCHES + XTRA & goto nascopyalert
    if errorlevel 5 echo OKCOPY + MISMATCHES & goto cleanup
    if errorlevel 4 echo MISMATCHES & goto nascopyalert
    if errorlevel 3 echo OKCOPY + XTRA & goto cleanup
    if errorlevel 2 echo XTRA & goto nascopyalert
    if errorlevel 1 echo OKCOPY & goto cleanup
    if errorlevel 0 echo No Change & goto nascopyalert
:cleanup
Echo Congrats - All files were backed up properly.  Cleaning up
REM cd e:\gh\temp
REM del /Q *.*
cd e:\gh\temp
    del /Q *.*
cd e:\gh\backups
    del /Q *.*
IF "%errorlevel%"=="0" (goto EOF) ELSE (goto cleanupalert)
:zipfail
echo FAILURE 
echo Backup files did not zip properly - Check Backups!!
:testzipfail
echo FAILURE 
echo Backup files did not pass integrity chec - Check Backups!!
:archivemovefail
echo FAILURE 
echo Backup files did not move to archive directory - Check Backups!!
:errorextract   
echo FAILURE 
echo Backup files did not extract to test directory properly - Check Backups!!
:comparealert
Echo FAILURE
echo Backup files did not pass comparison check in FC - Check Backups!!
:nascopyalert
echo FAILURE 
echo Backup files did not copy to the NAS - Check Backups!!
:cleanupalert
echo FAILURE 
echo Backup files did not clean up - Check Backups!!
:cleancomplete
:EOF
Echo Proccess Complete - Check Logs and emails.

Но это может сработать после некоторой настройки. Лучше было бы, если бы такие варианты были в 7zip.

Другие вопросы по тегам