jonger
Goto Top

Gleiche Dateinamen verzippen mit Batch

Ich stehe vor folgendem Problem:

In einem Ordner befinden sich mehrere Dateien.
Die Dateinamen dieser Dateien sind immer doppelt vorhanden --> 123.pdf, 123.xls; 456.pdf, 456.xls; 789.pdf, 789.xls usw....

Ich muss nun immer aus 123.pdf und 123.xls eine zip-Datei erstellen.
Die zip-Datei muss dann entsprechend mit 123.zip benannt werden.

Gibt es die Möglichkeit diesen Vorgang mit einer .bat zu automatisieren?
Stand jemand schon einmal vor dem selben Problem?

Vielen Dank für Eure Antworten...!

Content-Key: 150108

Url: https://administrator.de/contentid/150108

Printed on: April 20, 2024 at 00:04 o'clock

Member: Miyamoto
Miyamoto Sep 01, 2010 at 09:42:23 (UTC)
Goto Top
Hi,

Schau dir mal die Command-Line von 7zip an.
Link

Gruß Miyamoto
Member: bastla
bastla Sep 01, 2010 at 09:44:09 (UTC)
Goto Top
Hallo Jonger und willkommen im Forum!

Sollte sich eigentlich in einer Zeile direkt in der CMD-Shell machen lassen:
for %i in ("D:\Dein Ordner\*.pdf") do @if exist "%~dpni.xls" @echo 7z a -tzip "D:\Gezippt\%~ni.zip" "%~dpni.*"
Als Batch:
@echo off & setlocal
set "Quelle=D:\Dein Ordner"  
set "Ziel=D:\Gezippt"  

for %%i in ("%Quelle%\*.pdf") do if exist "%%~dpni.xls" echo 7z a -tzip "%Ziel%\%%~ni.zip" "%%~dpni.*"  
In beiden Fällen wird - zum Testen - der Befehl zum Komprimieren wegen des "echo" nur ausgegeben, aber nicht durchgeführt ...

[Edit] Etwas genauer wäre es noch, nur die beiden gewünschten Dateien zu erfassen (in den beiden obigen Versionen werden jeweils alle Dateien mit gleichem Namen, also etwa auch eine 123.doc, etc) in das Archiv übernommen:
for %i in ("D:\Dein Ordner\*.pdf") do @if exist "%~dpni.xls" @echo 7z a -tzip "D:\Gezippt\%~ni.zip" "%i" "%~dpni.xls"

Die Erklärung für "%~dpni" findest Du in den letzten eineinhalb Seiten von "for /?".
[Edit]

Grüße
bastla
Member: ottscho
ottscho Sep 01, 2010 at 09:44:16 (UTC)
Goto Top
Wenn du z.B. zip c:\quelle\123.* c:\ziel\123.zip sollten alle Files welche mit 123 beginnen gezippt werden.
Nun machst du das in eine Schleife und ersetzt 123 durch eine Variable, wo deine Dateinamen bzw. Zahlen beinhalten.

Gruß
ottscho
Member: Jonger
Jonger Sep 01, 2010 at 10:30:12 (UTC)
Goto Top
Wie geil ist das denn!!!!

Super - bissle angepasst und die Sache läuft!

Herzlichen Dank!!!!

gruss
Member: subdeva
subdeva Feb 26, 2011 at 18:49:15 (UTC)
Goto Top
Hallo Bastla,

ich hoffe inständig, Dich gibt es noch und dass du meinen Kommentar liest... oder mir jemand anderes helfen kann...

Ich stehe vor der gleichen (für mich derzeit) lästigen Aufgabe, mehrere Dateien zu zippen...

Habe mir den Befehl angeschaut und irgendwie hat sich im cmd auch was getan .. allerdings find ich keine zip dateien... Die Dateien liegen auf einer externen Festplatte H:\Playbacks\SFO
Natürlich hab ich die Dateiendungen ausgetauscht.. grins.. aber irgendwas scheint da doch noch zu fehlen... Ich bin absolute Laie und benötige driiiiiiiiiiiiiiiiiiiiiiingend eine konkrete Formulierung dessen, was ich im cmd eingeben muss.

Tausend Dank im Voraus.

deva
Member: bastla
bastla Feb 26, 2011 at 20:43:56 (UTC)
Goto Top
Hallo subdeva und willkommen im Forum!

Grundsätzlich ist es keine ganz so gute Idee, sich an alte Threads ranzuhängen - ein neuer mit dem Hinweis auf den (ähnlichen) alten bietet bessere Chancen, dass Dir auch andere Batcher hier helfen können ...
Wenn Du den obigen Batch angepasst hast, kannst Du noch aus "echo off" ein "echo on" machen und ihn dann von der Kommandozeile aus starten - so kannst Du den Ablauf genau nachvollziehen (und damit auch einen ev Fehler genauer eingrenzen bzw beschreiben) ...

... und, nur zur Sicherheit: "7zip" ist bei Dir installiert und gibt ein "Lebenszeichen", wenn Du an der Kommandozeile einfach nur "7z" eingibst? Falls nein, genügt es auch, sich die Version "7za" zu holen, die entpackte "7za.exe" in den Windows-Ordner zu kopieren und im Batch aus "7z" eben "7za" zu machen ...

Grüße
bastla
Member: subdeva
subdeva Feb 27, 2011 at 01:50:36 (UTC)
Goto Top
stöhn.. sorry Bastla... das ist zu viel für mich.. lach.. doch erstmal danke und *froi froi* für deine Antwort.. ich pikse noch ein wenig...und um es Dir noch mal zu verdeutlichen, was für eine Megalaie ich bin face-big-smile.. ich weiß nicht mal was ein Batch ist,.. grins.. Ob das, was ich gemacht habe richtig ist, bezweifle ich eigentlich... also für ganz Doofe wie mich...

Ich habe diese von dir geschriebene Zeile verwendet:

for %i in ("D:\Dein Ordner\*.pdf") do @if exist "%~dpni.xls" @echo 7z a -tzip "D:\Gezippt\%~ni.zip" "%~dpni.*"

bin vorher auf H:.. und habe in der Klammer ("H:\Playbacks\SFO\*.cdg*) .. anstelle der xls habe ich mp3 verwendet.. und habe als Zielordner "H:\Gezippt\... alles andere habe ich quasi so gelassen, wie du es schriebst..

Ja ich habe 7 zip installiert.. und im cmd ratteln auch die ganzen Dateien runter und werden als Zip Datei aufgeführt.. allerdings finde ich sie nicht auf dem Rechner.. Ergo.. Dussele wird wohl die Zeile so nicht übernehmen können? Wollte mich auch schlau machen, was ~dpni sein soll über deine andere Info.. mit dem for.. was ist ergo on of... auch hier hab ich null Ahnung was das ist,... *schäm*.. Bin am Suchen wie eine Dolle aber konnte ausser den Thread hier nichts finden face-sad.. Google lässt mich hängen.. grins

Also auf gut Deutsch, das ist hier für mich Fremdsprache.. und ich benötige wirklich eine Anleitung für Blöde face-wink *liebschaut*

Grüßle
deva
Member: bastla
bastla Feb 27, 2011 at 10:42:27 (UTC)
Goto Top
Hallo subdeva!

Dass Du keine Zip-Dateien erhalten hast, ist nicht weiter überraschend - die von Dir verwendete Zeile hat als besondere Eigenschaft ein "Sicherheits"-"echo" - um mich mal selbst zu zitieren:
In beiden Fällen wird - zum Testen - der Befehl zum Komprimieren wegen des "echo" nur ausgegeben, aber nicht durchgeführt ...
Wenn Du dieses "echo" weg lässt (getestet hast Du ja schon genug face-wink), wird nicht mehr gezeigt, was passieren würde, sondern tatsächlich gezippt ...
was ~dpni sein soll
... ist relativ leicht zu erklären (bzw mittels "set /?" in der Online-Hilfe nachzulesen): Für jede Datei, die von der Schleife erfasst wird, enthält "%i" alle Pfad-Informationen (inklusive Namen und Dateityp); wenn jetzt aber nur alles außer dem Typ benötigt wird, können die restlichen Daten ("drive", "path" und "name") einzeln - bzw als Kombination - angesprochen werden - ist demnach gerade die Datei
H:\Playbacks\SFO\Beispiel.cdg
an der Reihe und daher durch "%i" repräsentiert, ergibt sich daraus
H:\Playbacks\SFO\Beispiel
- daran noch ein ".*" angefügt "erwischt" jetzt alle Dateien dieses Ordners mit diesem Namen, unabhängig davon, welchen Typ sie haben, und kann sie so gemeinsam in eine Zip-Datei komprimieren. Damit diese Datei den gleichen Namen (und natürlich den Typ ".zip") wie die enthaltenen Dateien bekommen kann, wird dann nur "%~ni" - dieses Mal geht es ja nicht auch um Laufwerk oder Pfad - verwendet.
Eine Batch-Datei ist übrigens dazu da, die ganze Aktion mehrmals auszuführen - dazu werden die Befehle in eine Datei mit dem Type ".bat" oder ".cmd" gespeichert, und danach reicht ein Starten dieser Datei (per Doppelklick oder durch Eingabe Ihres Namens - bzw, falls sie nicht im aktuellen Ordner liegt des kompletten Pfades - an der Kommandozeile), um die enthaltenen Arbeitsschritte durchführen zu lassen - bei einem Einzeiler wie in diesem Fall eigentlich gar nicht nötig, aber etwas übersichtlicher und leichter anzupassen, wie das Beispiel oben zeigen sollte ...

Grüße
bastla
Member: subdeva
subdeva Feb 27, 2011 at 12:04:37 (UTC)
Goto Top
also ganz ehrlich.. Bastla.. wärst jetzt in meiner Nähe, ich würd dich niederknutschen face-smile *strahl wie ne Gescheite*.. weils Blondchen hats geschafft.. grinsel..

Gaaaaaaaaaaaaaaaanz lieben Dank an Dich.. ich bin jesses erleichtert.

PS: Gibt es noch etwas ausser die primitiven Programme, wie ich doppelte Dateien ausfindig machen kann?.. fg.. ich weiß ein anderer Thread.. aber wenn ich dich hier schon mal hab.. sag mir ja und ich eröffne einen neuen.. lach..

Liebe Grüße und Dich niederknuddel für deine Geduld.

deva
Member: bastla
bastla Feb 27, 2011 at 12:16:53 (UTC)
Goto Top
Hallo subdeva!

Schön, dass es jetzt tut ... face-smile
Gibt es noch etwas ausser die primitiven Programme, wie ich doppelte Dateien ausfindig machen kann?
So ganz genau weiß ich jetzt zwar nicht, was ich mit der Frage anfangen soll - aber doppelte (oder auch mehrfach vorhandene) Dateien lassen sich mit zB CloneSpy recht gut finden und behandeln ...

Falls Deine Frage anders gemeint war, würde ich tatsächlich zu einem neuen Thread raten.

Grüße
bastla
Member: subdeva
subdeva Feb 27, 2011 at 14:28:57 (UTC)
Goto Top
ne face-smile du bist klasse.. danke, danke, danke... (Hast bestimmt schon nen ganzen Sack voll mit Danke.. lach)...

Ich bin wunschlos glücklich und jetzt kann auch jeder andere Laie, sofern Bedarf besteht, das hier verstehen.. grinsel
Member: Biber
Biber Feb 27, 2011 at 15:04:38 (UTC)
Goto Top
Moin subdeva,

auch von mir ein Willkommen im Forum.

Bevor dir noch ein "Ach übrigens, dabei fällt mir noch eine Frage ein.." in den Sinn und wie bei Frauen üblich auch auf die Lippen bzw. Tastatur kommt...
*anmutig 50 Cent in die Chauvi-Kasse schnipp*

Ich schliesse diesen Thread mal... wir haben genug ausgewiesene Neubaufläche für kommende Beiträge.

Grüße
Biber