Format zip jest standardem kompresji plików, jednak wiele zaawansowanych użytkowników i administratorów systemu preferuje format 7z, ponieważ oferuje znacznie lepsze współczynniki kompresji. Format zip ma kilka rzeczy, które się na to nadają, takie jak szybkość (w stosunku do innych formatów kompresji) i obsługa aplikacji.
Aby uzyskać najlepsze z obu światów, stworzyliśmy skrypt, który przekształci pliki zip w pliki 7z za pomocą jednego polecenia, procesu, który nazywamy "głęboką archiwizacją".
Dlaczego więc potrzebujesz tego skryptu, skoro możesz po prostu utworzyć archiwa 7z na początek? Oto kilka powodów:
Rozważmy ten scenariusz:
Prowadzisz witrynę FTP, na której klienci przesyłają dane do Ciebie w formacie zip. Twoi użytkownicy następnie pobierają i wykorzystują dane w razie potrzeby, ale chcesz zachować te pliki przez jakiś czas, na wypadek gdyby użytkownicy znowu ich potrzebowali (w takim przypadku jesteś bohaterem, który ma je łatwo dostępne). Aby zaoszczędzić trochę miejsca, możesz przekonwertować archiwa zip do formatu 7z i ukryć je.
Alternatywnie, zamień dane przesłane przez klienta z powyższego scenariusza na kopie zapasowe danych użytkownika (lub cokolwiek innego, co można wymyślić) i widać, że istnieje wiele praktycznych aplikacji do tego.
@ECHO OFF ECHO Deep Archive ECHO Napisane przez: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Pobiera plik Zip i ponownie kompresuje go jako archiwum 7z. REM Proces skryptu: REM 1. Dekompresuj istniejące archiwum. REM 2. Skompresuj wyodrębnione pliki w formacie 7z. REM 3. (opcjonalnie) Zatwierdź nowy plik 7z. REM 4. (opcjonalnie) Usuń archiwum źródłowe. REM REM Użycie: REM DeepArchive ZipFile REM REM Wymagania: REM Narzędzie wiersza poleceń 7-Zip (7za.exe) znajduje się w lokalizacji ustawionej w zmiennej PATH. REM REM Uwagi dodatkowe: REM Ten skrypt przetwarza pojedyncze archiwum zip. REM Aby przetworzyć wszystkie archiwa zip w folderze, użyj polecenia ForFiles z wiersza poleceń: REM FORFILES / P "pathtozipfiles" / M * .zip / C "cmd / c DeepArchive @path" REM REM Aby uruchomić kompresję / dekompresję archiwum jako procesy w tle o niskim priorytecie REM dodaj to przed poleceniami 7ZA (NIE dodawaj tego przed poleceniem 7ZA walidacji): REM START / BelowNormal / Wait REM Dodanie powyższego polecenia spowoduje użycie nowego okna do wykonania tych operacji. SETLOCAL EnableExtensions EnableDelayedExpansion REM Czy plik głębokiego archiwum ma być sprawdzony? (1 = tak, 0 = nie) USTAW Waliduj = 0 REM Poziom kompresji: 1,3,5,7,9 (wyższy = wolniejszy, ale większy stopień kompresji) USTAW CompressLevel = 5 REM Usunąć źródłowy plik zip po sukcesie? (1 = tak, 0 = nie) SET DeleteSourceOnSuccess = 1 REM ---- Nie modyfikuj niczego poniżej tej linii ---- SET ArchiveFile =% 1 SET DeepFile =% ArchiveFile: .zip = .7z% SET tmpPath =% TEMP %% ~ nx1 SET tmpPathZip = "% tmpPath% *" SET tmpPath = "% tmpPath%" SET tmpFile = "% TEMP% tmpDeepArchive.txt" JEŚLI NIE EXIST% tmpPath% (MKDIR% tmpPath%) ELSE (RMDIR / S / Q% tmpPath%) ECHO Archiwum wyodrębniające:% ArchiveFile% 7ZA x% ArchiveFile% -o% tmpPath% ECHO. Archiwum kompresujące ECHO:% DeepFile% 7ZA a -t7z -mx% CompressLevel%% DeepFile%% tmpPathZip% ECHO. IF % Validate% == 1 (ECHO Sprawdzanie poprawności archiwum:% DeepFile% 7ZA t% DeepFile% | FIND / C "Wszystko w porządku">% tmpFile% SET / P IsValid = <% tmpFile% IF! IsValid! == 0 (Walidacja ECHO nieudana! DEL / F / Q% DeepFile% ECHO, GOTO Fail) ELSE (zatwierdzono ECHO.) ECHO.) GOTO Sukces: Sukces IF % DeleteSourceOnSuccess% == 1 DEL / F / Q% ArchiveFile% ECHO Success GOTO End: Fail ECHO Failed GOTO End: End IF EXIST% tmpFile% DEL / F / Q% tmpFile% IF EXIST% tmpPath% RMDIR / S / Q% tmpPath% ENDLOCAL
Pobierz DeepArchive Script z SysadminGeek.com
Pobierz 7-Zip Narzędzie wiersza poleceń