[Batch]Suche *.zip programm das sich über Batch dateil steuern lässt und ...

nesQuick

Lt. Junior Grade
Registriert
Aug. 2007
Beiträge
384
... automatisch die neuste datei erkennt. (Sorry Topic war zu kurz :( )

Hi,

Also nochmal mein Problem ausformuliert: Und Zwar suche ein ein Kompirmierungsprogramm das sich über eine Batch Datei steuern lässt im Idealfall *.zip erzeugen kann aber andere (bekannte) gehen auch.

Was nicht zwingend erforderlich ist, wäre wenn das programm aus 10 Datein die 3 neusten erkennt. Am Datum der letzten änderung. Das aber kein muss. Habe gesehn das 7zip so etwas in der art unterstützt aber nicht genau das.

Kennt da jemand vll eins und könnte er mir dann auch erklären wie die syntax des programms funktioniert. :)


Danke
Ole
 
Je nachdem in welchen Dimensionen sich die Erstellungsdaten unterscheiden (Minuten oder Tagen) wird es unterschiedlich schwer. Wenn die Dateien allerdings ihr Erstellungsdatum im Dateinamen tragen, ist es mittels Stringmanipulation ein Leichtes, das Datum zu extrahieren. Dann noch ein Schleife mit Vergleichen und voilà!
 
Nein die Daten tragen leider keinerlei nützliche Infos im Dateinamen mit sich.
 
Dann probier doch mal "dir" in Kombination mit dem "find"-Befehl. Such dir mit "dir /?" den geeigneten Parameter für die Dateiauflistung mit Erstellungsdatum und benutze "find", um die relevanten Daten zu extrahieren.

Ich habe leider grad kein Windows zur Hand, sonst würde ich das mal selbst ausprobieren. Aber ein bisschen Eigeninitiative darf schon gefordert werden, immerhin gibt's hier Problemlösungen umsonst, ne :D
 
Ich meine Winzip in der Pro version hat ein Kommandozeilentool dabei. Ansonsten WinRar, dort gibt es die rar.exe für die Kommandozeile.
 
das problem mit der kommandozeile hab ich gelöst 7zip lässt sich sogar ohne install (also nur das programm verzeichniss kopieren) nutzen. mit 7z a tzip test.zip *txt lassen sich z.B. alle text files in eine rar hinzufügen.

Bleibt noch das probl mit dem erkennen der neusten datei :)
@moagnus ich teste das gleich mal und geb RM :D
 
Muss es eine Batch-Datei sein bzw. was genau soll die machen?
Die 3 neuesten Dateien in eine zip zusammenpacken?
 
Nein es muss keine Batch sein. Es sollte sich aber über eine Batch starten lassen :)

Genau es soll die 3, 4 oder 5 neusten Dateien in eine *.zip packen.

Ich erkläre am besten einfach mal die ganze Situation:
NT Backup schreibt logs. in einen bestimmten Ordner diese werden von 0 bis 9 durch nummeriert. Problem hier: Wenn 9 geschrieben ist fängt es bei 0 wieder an. Eigentlich schlau aber lässt sich dann schwer mit Batches händeln.

Dann habe ich schon ein Script welches mir die dann gezippte Datei per Email schickt, ist VB.

Am ende sollte es dann so funktionieren, dass eine Batch oder was auch immer erkennen soll wenn NTbackup fehlschlägt (Wie ich das löse habe ich noch gar keine Idee, wenn da einer ne Idee hat gerne her damit :) ) und dann die 3 letzten logs mir gezippt per Email schickt.

Gelöst ist das meiste schon.
Das VBscript zum Mails versenden steht und funktioniert sogar mit anhängen :)
Das erkennen des fehlschlagens läuft noch per abfrage.
Das packen hab ich auch allerdings nehme ich jetzt alle 10 logs.

Ich hoffe das war ausführlich genug.
 
So, sollte funktionieren, ich hoffe du hast Java installiert:

Anwendung:
java -jar ZipNewFiles.jar "Pfad" "Anzahl der neuesten Dateien, die gezippt werden sollen"

Bsp.:
Code:
java -jar ZipNewFiles.jar "C:\Programme\7-Zip" 3

Erforderlich ist mindestens Java 1.5.
Außerdem wird die 7z.exe benötigt, die ZipNewFiles.jar also in den 7-Zip-Ordner kopieren und dort ausführen. Die Datei wird im als Parameter angegebenen Ordner erstellt.

Achtung:
Beim Pfad das letzte Backslash niemals angeben! Für Dateien auf D:\ lautet der Befehl also
Code:
java -jar ZipNewFiles.jar "D:" 3

Solltest du damit etwas anfangen können, kann ich auch noch gerne auf Änderungswünsche eingehen! ;)
 

Anhänge

Hört sich sehr gut an. Ich werde es morgen gleich mal testen :) Und dir sagen wie toll ich das finde :)

Hast du zufällig auch eine Idee für mein anderes Problemchen? *gg*
 
Rufe doch NTBackup per Batch-Skript auf und fange dann den Errorlevel ab. Oder lass dir beim Fehlschlag ein Log schreiben.

Wenn 9 geschrieben ist fängt es bei 0 wieder an.
Warum benennst du die Ordner nicht einfach um? Dann können wieder Ordner von 0 bis 9 angelegt werden.

mit 7z a tzip test.zip *txt lassen sich z.B. alle text files in eine rar hinzufügen
Das wohl leider nicht, da die RAR-Komprimierung nur von WinRAR selbst unterstützt wird, da proprietär. Dekomprimieren kann 7zip das sehr wohl, packen eben nicht. Aber warum benutzt du nicht gleich das 7zip-Format? Damit kannst du sogar noch die Kompressionsstufe spezifizieren und es hat eine weit bessere Kompression als der veraltete Zip-Standard.
Den Sinn von Versenden der Logs verstehe ich leider immer noch nicht...
 
Code:
D:\backup>java -jar "D:\backup\7zip\ZipNewFiles.jar" "C:\Dokumente und Einstellu
ngen\sicherung\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBacku
p\data" 3
java.io.IOException: CreateProcess: 7z a -tzip "C:\Dokumente und Einstellungen\s
icherung\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data
/Thu Sep 06 09.02.09 CEST 2007.zip" "C:\Dokumente und Einstellungen\sicherung\Lo
kale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\backup04.l
og" error=2
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(Unknown Source)
        at java.lang.ProcessImpl.start(Unknown Source)
        at java.lang.ProcessBuilder.start(Unknown Source)
        at ZipNewFiles.ZipNewFiles.zipNewFiles(ZipNewFiles.java:47)
        at ZipNewFiles.NewMain.main(NewMain.java:30)
java.io.IOException: CreateProcess: 7z a -tzip "C:\Dokumente und Einstellungen\s
icherung\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data
/Thu Sep 06 09.02.09 CEST 2007.zip" "C:\Dokumente und Einstellungen\sicherung\Lo
kale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\backup00.l
og" error=2
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(Unknown Source)
        at java.lang.ProcessImpl.start(Unknown Source)
        at java.lang.ProcessBuilder.start(Unknown Source)
        at ZipNewFiles.ZipNewFiles.zipNewFiles(ZipNewFiles.java:47)
        at ZipNewFiles.NewMain.main(NewMain.java:30)
java.io.IOException: CreateProcess: 7z a -tzip "C:\Dokumente und Einstellungen\s
icherung\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data
/Thu Sep 06 09.02.09 CEST 2007.zip" "C:\Dokumente und Einstellungen\sicherung\Lo
kale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\backup01.l
og" error=2
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(Unknown Source)
        at java.lang.ProcessImpl.start(Unknown Source)
        at java.lang.ProcessBuilder.start(Unknown Source)
        at ZipNewFiles.ZipNewFiles.zipNewFiles(ZipNewFiles.java:47)
        at ZipNewFiles.NewMain.main(NewMain.java:30)
Best wishes by Kamikatze a.k.a. Hannes Rannes! ;-)

fehler :(

Wenn das mit den änderungswünschen noch gilt :) Würd ich mich freun wenn der ein zip ist und wenns geht auch das ich mir das zielverzeichniss, wo die zip landet aussuchen kann :)

Ahm, was genau? Das automatische Erkennen, wenn NTBackup fehlgeschlagen ist?
Ich kenn mich damit nicht aus. Aber wie machst du es bisher?

Ja bis jetzt sieht es so aus

Code:
ECHO ********************************************************************************
ECHO.
ECHO                  War die Datensicherung Erfolgreich?
ECHO.
ECHO                      Druecken Sie die "1" fuer "ja"
ECHO                      Druecken Sie die "2" fuer "nein"
ECHO                      Danach bestätigen Sie bitte mit "Enter"
ECHO.
ECHO                                                                          
echo ********************************************************************************
set choice=
set /p choice=Bitte treffen Sie eine Wahl :
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' goto ja
if '%choice%'=='2' goto nein
ECHO "%choice%" Bitte eine vorhandene Auswahl treffen!
ECHO.
goto start

Das mit dem error level hört sich intressant an, kannst du das genauer umschreiben?

mit 7z a tzip test.zip *txt lassen sich z.B. alle text files in eine rar hinzufügen
Das wohl leider nicht, da die RAR-Komprimierung nur von WinRAR selbst unterstützt wird, da proprietär. Dekomprimieren kann 7zip das sehr wohl, packen eben nicht. Aber warum benutzt du nicht gleich das 7zip-Format? Damit kannst du sogar noch die Kompressionsstufe spezifizieren und es hat eine weit bessere Kompression als der veraltete Zip-Standard.

Ich meinte zip und das geht :) Und zip weil ohne extra programme windows kompatibel. Und bei text dateien ist ist die kompimierung nicht so wichtig.

Den Sinn von Versenden der Logs verstehe ich leider immer noch nicht...
Damit will ich das automatische überwachen mehrerer Sicherungen möglich machen :)

Wenn 9 geschrieben ist fängt es bei 0 wieder an.
Warum benennst du die Ordner nicht einfach um? Dann können wieder Ordner von 0 bis 9 angelegt werden.
Weil ich mir dann ja die ganze HDD voll müll.
 
Zuletzt bearbeitet:
Das Problem ist wahrscheinlich, dass du das Programm in "D:\backup>" ausführst, wo die Anwendungen nicht liegen, auch wenn du Java den richtigen Programmpfad übergibst. Bei der Ausführung wird dann die 7z.exe trotzdem im Ordner aufgerufen, von dem aus du das Programm gestartet hast (wo sie aber nicht vorhanden ist).

Den Ausgabe-Ordner kann ich anpassbar machen, hab ich mir gestern schon überlegt gehabt, aber nicht gewusst, ob du das überhaupt willst. Ich mach mich gleich an die Arbeit. :)

Update:
java -jar ZipNewFiles.jar "Quellordner" "Zielordner" "Anzahl"

Ich hab jetzt aber eine etwas eigenartige Entdeckung machen müssen.

Ein Backslash am Schluss macht nur Probleme, wenn der Parameter in Anführungszeichen übergeben wird. Anscheinend entwertet das Backslash auch das letzte Anführungszeichen in Parametern, d.h. der Parameter endet beim " nicht und die Anzahl der Argumente stimmt dann nicht mehr. Das ist kein Programmierfehler meinerseits. ;)

Das ist auch nicht weiter schlimm bei Ordnern: "C:\TMP" (kann man auch ohne Anführungszeichen schreiben).
Kommen Leerzeichen im Pfad vor, müssen die Anführungszeichen sein, der Backslash am Schluss kann wegfallen, auch nicht weiter schlimm.

Nur soll direkt auf C:\ oder D:\ gespeichert werden reicht ein "C:" nicht. Dann wird die Datei nämlich im aktiven Ordner auf dieser Partition gespeichert. Dann muss entweder C:\ oder "C:\\" geschrieben werden.

PS:
Wenn du willst, dass du das Programm aus einen beliebigen Ordner heraus starten kannst, musst du nur das 7-Zip-Programmverzeichnis zur Path-Systemvariable hinzufügen. Evtl. ist noch ein System-Neustart notwendig, bis das auch korrekt übernommen wurde. Dann kannst du das Programm auch so starten, wie du es vorhin versucht hast. :)
 

Anhänge

Zuletzt bearbeitet:
Hi,

Das funktioniert echt super cool :) Vielen vielen dank! Nur kann ich da der datei name ja variabel ist meine anderen scripte nicht mehr so nutzen. Wäre es möglich das der ausgabe name immer "logs.zip" ist.
So kann dann meine andere Batch vorm erstellen immer die alte löschen und das vbs script kann immer die logs.zip versenden.

Hier mal der teil des vbs scripts
Code:
objMessage.AddAttachment "D:\backup\logs.zip"
 
Kein Problem, ist ja noch viel einfacher so. Wusste nur nicht, dass du die alte Datei vorher löschst. Wenn nicht, werden die Dateien nämlich zum bestehenden zip-File hinzugefügt.

Update:
So, jetzt gibst du gleich den kompletten Pfad (incl. Dateiname) an, dann bist du flexibler. ;)

Code:
java -jar ZipNewFiles.jar D:\ C:\logs.zip 3
 

Anhänge

Zuletzt bearbeitet:
Ja sonst wirds ja immer mehr :)

BTW: bei meinen tests eben wurden die aber nicht hinzugefügt. Nur so für dich als info :) Echt vielen dank!
 
Zuletzt bearbeitet:
Immer wenn ich die cmd zum starten das jar ausgeführt habe hat er mmer eine nue zip angelegt. Wollte dir das auch nur mitteilen, ist für mich ja nicht von bedeutung :)

Mache jetzt nochmal den Finalen test, dann muss ich nurnoch herrausfinden wie ich NTbackup sage das es automatisch eine cmd ausführt wenn die sicherung fehlerhaft war :D

3 Noch dann haste deine 2k voll :D

**UPDATE**
java -jar ZipNewFiles.jar "C:\Dokumente und Einstellungen\sicherung\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\\" D:\backup\logs.zip 4

Erlegt mir jetzt einen Ordner an mit dem namen logs.zip und speichert da die datein mit dem namen "Thu Sep 06 15.00.48 CEST 2007.zip"
:)
 
Zuletzt bearbeitet:
Ich bin mir immer noch nicht ganz sicher, was du meinst.

Innerhalb einer Ausführung kommt natürlich immer alles in eine zip-Datei.

Beim Start wird die Systemzeit abgefragt und alles zu der Datei mit diesem Namen (der Systemzeit) hinzugefügt. Das hab ich absichtlich so gemacht, da ich nicht wusste, ob du die alten Dateien säuberst.

Bleibt der Dateiname nämlich gleich und du rufst das Programm ein zweites Mal auf, wird die bestehende Datei nicht gelöscht (was sich aber realisieren lassen würde), sondern es werden (z.B.) 3 weitere Dateien zur bereits bestehenden zip hinzugefügt.

7-Zip wird nämlich immer gleich aufgerufen und zwar so, dass die angegebenen Dateien zum Archiv hinzugefügt werden, wenn das Archiv noch nicht existiert, wird es von 7-Zip automatisch neu angelegt.

Jetzt ist es eben so geändert, dass die n neuesten Dateien zum angegebenen Archiv hinzugefügt werden, der Dateiname wird nicht mehr generiert. Existiert die Datei bereits, so wird sie aktualisiert und sonst neu angelegt. ;)

Ach ja! :)
2000er-Club, ich komme! :)
 
Zurück
Oben