Welche Parameter muss ich in einer Batch setzen um beim zippen die compression sowie die Geschwindigkeit zu definieren?
Hallo ich möchte mit 7zip ein paar Dateien komprimieren. Und das funktioniert soweit auch ganz gut. Nur dauert das zippen zu lange und deswegen muss ich das Script etwas optimieren.
Ich hab folgenden Quelltext:
Ich habe schon nach Anregungen im I-Net gesucht und auch schon etwas gefunden.
Nämlich : -m{Parameters}: set compression Method
Aber jetzt weiß ich nicht wo ich das in mein Quellcode packe und was ich in die Klammern schreibe wo "Parameters" steht.
Könnt Ihr mir helfen?
Mile Grazie
Ich hab folgenden Quelltext:
@echo off & setlocal
set "source=D:\SOURCEPATH"
set "dest=F:\DESTPATH"
set "ext=mda"
for %%i in ("%source%\*.%ext%") do (
set dupe=
echo Vergleiche %%i
if exist "%dest%\%%~nxi" do fc /b "%%i" "%dest%\%%~nxi">nul && set dupe=true
if not defined dupe copy "%%i" "%dest%"
)
REM Verbliebene Dateien kopieren
del "%source%\*.%ext%"
Pushd "%dest%"
For /F "Delims=" %%A in ('Dir /B/A-D "%dest%\*.%ext%"') Do call :ZipIt "%%~fA"
Popdrem
Del "%dest%\*.%ext%"
Goto :Eof
:ZipIt
Set "Zip=%~n1"
Set "Zip=%archive%%Zip:~0,9%.zip"
"C:\Programme\7-Zip\7z.exe" u "%Zip%" %1
Ich habe schon nach Anregungen im I-Net gesucht und auch schon etwas gefunden.
Nämlich : -m{Parameters}: set compression Method
Aber jetzt weiß ich nicht wo ich das in mein Quellcode packe und was ich in die Klammern schreibe wo "Parameters" steht.
Könnt Ihr mir helfen?
Mile Grazie
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 128291
Url: https://administrator.de/contentid/128291
Ausgedruckt am: 25.11.2024 um 12:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo D3ns!007!
Die Schleife lässt sich zwar auf
verkürzen, aber ob das viel bringt ...
Alternativ (je größer die Datei, desto sinnvoller) könntest Du zunächst die Dateigrößen vergleichen und nur bei gleich großen Dateien dann noch zusätzlich den byteweisen Vergleich durchführen:
Grüße
bastla
Die Schleife lässt sich zwar auf
for %%i in ("%source%\*.%ext%") do (
echo Vergleiche %%i
if exist "%dest%\%%~nxi" do fc /b "%%i" "%dest%\%%~nxi">nul || copy "%%i" "%dest%"
)
Alternativ (je größer die Datei, desto sinnvoller) könntest Du zunächst die Dateigrößen vergleichen und nur bei gleich großen Dateien dann noch zusätzlich den byteweisen Vergleich durchführen:
for %%i in ("%source%\*.%ext%") do (
set dupe=
echo Vergleiche %%i
for %%v in ("%dest%\%%~nxi") do if "%%~zi"=="%%~zv" fc /b "%%i" "%%~v">nul && set dupe=true
if not defined dupe copy "%%i" "%dest%">nul
)
bastla
Hallo D3ns!007!
ändern ...
Grüße
bastla
Dein Quellcode verkürzt das ganze nur sehr bedingt.
Das hatte ich befürchtet ...Nachdem eine Datei gezippt wurde und ins Archiev gepackt wurde, sollte sie gelöscht werden.
Soferne 7zip verlässliche Errorlevel liefert, könntest Du die letzte Zeile auf"C:\Programme\7-Zip\7z.exe" u "%Zip%" %1 && del %1
Grüße
bastla
Hallo D3ns!007!
oder so:
Grüße
bastla
Kann man anstatt das ganze Archiv nur den Archivnamen mit dem Dateinamen vergleichen? Das müsste noch viel schneller gehen und das unabhängig davon ob das Archiv groß oder klein ist. Es wäre zwar nicht mehr so resistent gegen redundanzen aber schneller bestimmt.
Meinst Du das soif not exist "%dest%\%%~nxi" copy "%%i" "%dest%"
if not exist "%Zip%" "C:\Programme\7-Zip\7z.exe" u "%Zip%" %1 || goto :eof
del %1
bastla
Moin D3ns!007,
wenn irgendein Skript unerwartet und auffällig langsam läuft, dann liegt es nach meinen Beobachtungen sehr selten daran, dass jemand vergessen hat, den Parameter "/Turbo=on" oder ähnliches mitzugeben.
Meistens ist in solchen Fällen irgendwo ein Denkfehler in der Strategie.
lass mich doch noch mal nachfragen:
--> ich würde, wenn ich aus irgendwelchen Gründen kein richtiges Versionsverwaltungssystem wie SVN oder CVS benutzen mag
Das würde dir zumindest ersparen, jede mda auf F: zu kopieren wie im bisherigen Konzept.
Wenn ich das falsch verstanden habe und auch heute bei dir bei meinetwegen 24 .mda-Dateien auf C: weniger als 24 .zip-Dateien auf F: entstehen, dann muss ich dein Skript wohl nochmal langsamer lesen...
Grüße
Biber
wenn irgendein Skript unerwartet und auffällig langsam läuft, dann liegt es nach meinen Beobachtungen sehr selten daran, dass jemand vergessen hat, den Parameter "/Turbo=on" oder ähnliches mitzugeben.
Meistens ist in solchen Fällen irgendwo ein Denkfehler in der Strategie.
lass mich doch noch mal nachfragen:
- ist Laufwerk F:, das %dest%-Laufwerk. denn auch so schnell wie Laufwerk C:? Oder ist das ein Netzlaufwerk oder ein CDROM-Laufwerk?
- welchen Sinn macht es denn für Dich, die Source-.mda-Dateien erst auf F: zu kopieren, dann in ein dortiges Zip zu quetschen und dann zu löschen?
- Woher um Himmels willen können denn bei dieser Mimik deine so genannten dupes entstehen? Du legst doch für jede jede jede mda-datei auf Lw C: jedes mal ein neues Zip an.
- und warum, wenn du schon 7Zip benutzt verwendest du das .zip-Format und glaubst, dass die 7-zip-Entwickler sich bei diesem Format mehr Mühe gegeben haben als beim Format ."7z".??
--> ich würde, wenn ich aus irgendwelchen Gründen kein richtiges Versionsverwaltungssystem wie SVN oder CVS benutzen mag
- einen Refererent-"Source"-Stand auf dem %dest%-Laufwerk liegen lassen (jeweils die aktuellste version der .mda-Datei
- im ersten Schritt mit "XCOPY /D und Schalter /L" alle Dateien anlisten lassen, die auf C: "neuer" als auf F:\ sind
- diese Deltaliste a) als "Zip-des-Tages-mit-allen-geänderten Dateien" zippen und auf %dest% in ein Unterverzeichnis %dest%\MdaDeltas packen mit Datum als Präfix
- diese Delta-Dateien auch 1:1 nach %dest% ins Referenz-MDA_Verzeichnis kopieren
- am Ende nochmal mit FC vergleichen, ob auf auf C: und F: die gleichen mda's rum- bzw. vorliegen (sollte laut Konzept ja so sein)
Das würde dir zumindest ersparen, jede mda auf F: zu kopieren wie im bisherigen Konzept.
Wenn ich das falsch verstanden habe und auch heute bei dir bei meinetwegen 24 .mda-Dateien auf C: weniger als 24 .zip-Dateien auf F: entstehen, dann muss ich dein Skript wohl nochmal langsamer lesen...
Grüße
Biber