
143851
12.04.2020
Batch für Datenzippen
Guten Morgen
Ich muss meine HDDs auf bestimmte Datentypen durchsuchen lassen und diese dann zippen.
Zur Zeit mache ich es folgnedermaßen.
Das kopiere ich in das jeweilige Verzeichnis und lasse es laufen. Klappt super.
Nun möchte ich es aber ins Root der HDD legen und von dort aus soll jedes Verzeichnis durchsucht und dann entsprechend ausgeführt werden. Dann kann ich das den ganzen Tag im Hintergrund laufen lassen ohne das mühselige händische kopieren.
Bin für Eure Hilfe sehr dankbar.
Ich muss meine HDDs auf bestimmte Datentypen durchsuchen lassen und diese dann zippen.
Zur Zeit mache ich es folgnedermaßen.
for %%i in (*.psd) do C:\Programme\7-Zip\7z.exe a %%~ni.zip %%i
Das kopiere ich in das jeweilige Verzeichnis und lasse es laufen. Klappt super.
Nun möchte ich es aber ins Root der HDD legen und von dort aus soll jedes Verzeichnis durchsucht und dann entsprechend ausgeführt werden. Dann kann ich das den ganzen Tag im Hintergrund laufen lassen ohne das mühselige händische kopieren.
Bin für Eure Hilfe sehr dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 564645
Url: https://administrator.de/forum/batch-fuer-datenzippen-564645.html
Ausgedruckt am: 19.04.2025 um 12:04 Uhr
24 Kommentare
Neuester Kommentar
Moin,
Auch wenn google-Links inzwischen verpönt sind, ist das eine Sache von Sekunden es dort zu finden:
https://www.google.com/search?q=batch+for+files+rekursion
Oder man nutzt die Suche hier im Forum um dann sowas zu finden:
Windows Batch Grundlagen
Tutorial zur FOR-Schleife
Frohe Ostern
lks
PS: Du suchst den Parameter /R
Auch wenn google-Links inzwischen verpönt sind, ist das eine Sache von Sekunden es dort zu finden:
https://www.google.com/search?q=batch+for+files+rekursion
Oder man nutzt die Suche hier im Forum um dann sowas zu finden:
Windows Batch Grundlagen
Tutorial zur FOR-Schleife
Frohe Ostern
lks
PS: Du suchst den Parameter /R
Zitat von @143851:
Hallo
hallo,Hallo
Danke für deine Antwort aber es hilft mir nicht weiter, da ich NULL Ahnung von Programierung etc habe.
Hm, noch nie mit Skrpting beschäftigt? - immer nur Mäuseschubser gewesen?Das womit ich zur Zeit arbeite habe ich nach Tagelangem suchen gefunden.
Für Euch Profis so dachte ich ist das kein Problem es auf meine Wünsche um zu bauen.
Also Batch im Root und dann alle Verzeichnisse und Unterverzeichnise durchsuchen lassen und gff meine psd´s zippen.
Und hier etwas Lesefutter bzgl. Windows Batch:
- Windows Batch Grundlagen
- Batch - ein paar Basics die man kennen sollte
- Workshop Batch for Runaways - Part I
- Workshop Batch for Runaways - Part II
- Workshop Batch for Runaways - Part III
- HowTo - Wie man Subroutinen in Batchfiles erstellt
- Tutorial zur FOR-Schleife
Vielen Dank
Gruss Penny.
Zitat von @143851:
Danke für deine Antwort aber es hilft mir nicht weiter, da ich NULL Ahnung von Programierung etc habe.
Danke für deine Antwort aber es hilft mir nicht weiter, da ich NULL Ahnung von Programierung etc habe.
Aber lesen und verstehen kannst Du schon?
Für Euch Profis so dachte ich ist das kein Problem es auf meine Wünsche um zu bauen.
Das kost' i.d.R. Geld.
Aber das Tutorial mit der "For-Schleife", auf das ich und Penny verlinkt haben, erklärt alles. Wichtig ist der Abschnitt mit dem Parameter /R.
In diesem Forum geht es um Hilfe zur Selbsthilfe und nicht um pampern. Ein wenig Eigeninitiative muß schon sein - und wenn es nur das Reinschreiben eines Parameters in das eigene Skript ist.
lks
Moin und frohe Ostern.
Dein Code ist soweit ok.
Wenn Du Ihn so umbaust, sollte es funktionieren.
Die Ausgabe des DIR-Befehls hier liefert pro Zeile eine PSD-Datei mit zugehörigem Pfad und das Ganze läuft von der Wurzel an los.
/s weist DIR an, in Unterverzeichnissen zu suchen.
Schau mal hier:
https://stackoverflow.com/questions/180741/how-to-do-something-to-each-f ...
Dein Code ist soweit ok.
Wenn Du Ihn so umbaust, sollte es funktionieren.
for %%i in ('dir /b /s c:\*.psd') do C:\Programme\7-Zip\7z.exe a %%~ni.zip %%i
Die Ausgabe des DIR-Befehls hier liefert pro Zeile eine PSD-Datei mit zugehörigem Pfad und das Ganze läuft von der Wurzel an los.
/s weist DIR an, in Unterverzeichnissen zu suchen.
Schau mal hier:
https://stackoverflow.com/questions/180741/how-to-do-something-to-each-f ...
Zitat von @143851:
Hallo
Das mit der Eigenintiative ist bestimmt gut aber wenn man absolut NULL Ahnung hat, muss man ja erstmal Grundlagen erlernen und dazu habe ich weder den Skill noch die Zeit diese Grundlagen erst zu erlernen.
Wenn man nicht den Skill hat, kann man sich diesen aneignen. Keiner ist allwissend geboren. Dein Argument mit der zeit finde ich sehr schwach. Aber taglelanges suchen im Web nach DER Lösung, ist auch keine alternative.Hallo
Das mit der Eigenintiative ist bestimmt gut aber wenn man absolut NULL Ahnung hat, muss man ja erstmal Grundlagen erlernen und dazu habe ich weder den Skill noch die Zeit diese Grundlagen erst zu erlernen.
Ich hoffte hier auf schnelle einfache Hilfe, es muss ja nun nicht jeder ein Programmierer sein um hier Hilfe zu erhalten.
Und wenn es doch nur " ein Parameter " ist sollte es doch möglich sein diese Hilfe zu erhalten.
Weißt Du überhaupt was dieser Schnipsel Code macht?Und wenn es doch nur " ein Parameter " ist sollte es doch möglich sein diese Hilfe zu erhalten.
Und gerade weil es ein Parameter ist, solltest Du es hinbekommen.
Vielen Dank
Gruss Penny.
Zitat von @143851:
Hallo
Es werden mir nur 3 leere zips im Root erzeugt. hmmmm??
Hallo
Es werden mir nur 3 leere zips im Root erzeugt. hmmmm??
Zitat aus Tutorial zur FOR-Schleife
Der Parameter /R
Bei Angabe des Parameters /R wird die FOR-Schleife ausgehend vom Verzeichnis [Laufwerk:]Pfad rekursiv für jedes darunter liegende Verzeichnis ausgeführt. Wenn kein Basis-Verzeichnis angegeben wird, wird das aktuelle Verzeichnis verwendet. Für [Laufwerk:]Pfad kann keine Laufvariable einer anderen FOR-Schleife oder eine verzögert erweiterte Variable (in Anführungszeichen eingeschlossen) angegeben werden! Satz ist eine Folge von Zeichenketten, die, wenn sie Wildcards (* oder ?) enthalten, als Maske für Dateinamen interpretiert werden. Alle gefundenen Dateien aus den durchsuchten Verzeichnissen werden inkl. Pfad nacheinander an die Laufvariable zugewiesen. Enthält Satz zusätzlich eine Zeichenkette ohne Wildcards, werden die Pfade aller durchsuchten Verzeichnisse, ergänzt um \Zeichenkette, an die Laufvariable zugewiesen. Ist die Zeichenkette in Anführungszeichen eingeschlossen, wird \"Zeichenkette" ergänzt.
Beispiel 4 (für die Kommandozeile):
for /r "E:\Archiv" %i in ("Audio\*.mp3" Test1 "Test2") do @echo %i
Wenn sich im Verzeichnis E:\Archiv die Dateien Test1.txt und Test2.txt und das Verzeichnis Audio mit den Dateien Test1.mp3, Test2.mp3, Track01.mp3 und Track02.mp3, befinden, ist die Ausgabe folgende:
E:\Archiv\Audio\Test1.mp3
E:\Archiv\Audio\Test2.mp3
E:\Archiv\Audio\Track01.mp3
E:\Archiv\Audio\Track02.mp3
E:\Archiv\Test1
E:\Archiv\"Test2"
E:\Archiv\Audio\Test1
E:\Archiv\Audio\"Test2"
Enthält Satz lediglich einen Punkt, erhält man unter Verwendung der Erweiterung von Laufvariablen einen Ersatz für
dir /s /b /a:d [[Laufwerk:]Pfad]
der auch das Basisverzeichnis liefert. Unter DOS/Windows gibt es nämlich in jedem Verzeichnis zwei Standard-Einträge, die immer vorhanden sind: . und .. Der Punkt (.) stellt einen Verweis auf das Verzeichnis selbst dar. Der zweifache Punkt (..) ist ein Verweis auf das Elternverzeichnis.
Beispiel 5 (für die Kommandozeile):
Auf die eben beschriebene Verzeichnisstruktur angewendet, liefert der Befehl
for /r "E:\Archiv" %i in (.) do @echo %~fi
die folgende Ausgabe:
E:\Archiv
E:\Archiv\Audio
Die Parameter /D und /R können auch kombiniert werden.
Beispiel 6 (für die Kommandozeile):
Wenn auf die schon bekannte Verzeichnisstruktur der Befehl
for /d /r "E:\Archiv" %i in (*) do @echo %i
angewendet wird, ist die Ausgabe folgende:
E:\Archiv\Audio
Das Ergebnis ist also gleichwertig zu
dir /s /b /a:d E:\Archiv
Wenn Du schon zu Faul bist da selbst reinzuschauen.
lks
Zitat von @beidermachtvongreyscull:
Dann habe ich Deine Anforderung nicht ganz verstanden.
Wie ist der IST-Zustand?
Wo soll das Script liegen?
Wo soll nach Dateien gesucht werden?
Nach welchen Dateien soll gesucht werden?
Was soll mit diesen Dateien denn genau passieren?
Dann habe ich Deine Anforderung nicht ganz verstanden.
Wie ist der IST-Zustand?
Wo soll das Script liegen?
Wo soll nach Dateien gesucht werden?
Nach welchen Dateien soll gesucht werden?
Was soll mit diesen Dateien denn genau passieren?
Das sollte er alles einem Dienstleister erzählen. Wir sind keine Dressurpferde, die hüpfen, wenn einer spring sagt.
lks
Moin Moin,
Ich erarbeite und sammle mir auch jedes Skript zusammen.
Mittlerweile sehr viel von meinen eigenen Skripten
Aber das wichtigste von ALLEM:
Lerne das Skript zu interpretieren!
Am Anfang kann man auch nach dem Studium der man pages nicht alles zuordnen.
Aber man sollte grob verstehen wann ein Befehl beginnt, wann endet und wann er übergibt.
Die besten Hilfen sind wie immer das Internet mit den Seiten,
Dann eine Kommandozeile wo man den Befehl einfach mit einem abschließenden /? ausführt.
Öffne mal eine Kommandozeile und gebe
ein.
aber auch, mir hilft es SEHR!, hier der Bereich Batch:
Ich lese mir jedes Ticket hier mit einem Thema das mich interessiert durch.
Manchmal kann Ich helfen.
Manchmal finde Ich Hilfen für mich.
Manchmal ganz andere Wege,
die besser manchmal sind.
Manchmal Erklärungen die von Skripten die Schalter mir besser erleuchten.
Du mußt in diesem Forum ein Grundinteresse zeigen.
Es haben viel zu viele hier einfach Lösungen für Probleme ohne Mitarbeit abgefragt.
Und das nervt und enttäuscht viele der gelernten alten Hasen/Häsinnen hier.
Zeige das du mitdenkst.
Wenn du sagst das du es nicht kannst ist ja ok.
Aber MITDENKEN zeigt du bist aktiv und willst nicht nur Hausaufgaben von den anderen gemacht bekommen
Ich frage auch viel um Hilfe und Ansätze, siehe hier.
Datensammlung Kunden
Mein Senf
Tom
Ich erarbeite und sammle mir auch jedes Skript zusammen.
Mittlerweile sehr viel von meinen eigenen Skripten
Aber das wichtigste von ALLEM:
Lerne das Skript zu interpretieren!
Am Anfang kann man auch nach dem Studium der man pages nicht alles zuordnen.
Aber man sollte grob verstehen wann ein Befehl beginnt, wann endet und wann er übergibt.
Die besten Hilfen sind wie immer das Internet mit den Seiten,
Dann eine Kommandozeile wo man den Befehl einfach mit einem abschließenden /? ausführt.
Öffne mal eine Kommandozeile und gebe
net user /?
aber auch, mir hilft es SEHR!, hier der Bereich Batch:
Ich lese mir jedes Ticket hier mit einem Thema das mich interessiert durch.
Manchmal kann Ich helfen.
Manchmal finde Ich Hilfen für mich.
Manchmal ganz andere Wege,
die besser manchmal sind.
Manchmal Erklärungen die von Skripten die Schalter mir besser erleuchten.
Du mußt in diesem Forum ein Grundinteresse zeigen.
Es haben viel zu viele hier einfach Lösungen für Probleme ohne Mitarbeit abgefragt.
Und das nervt und enttäuscht viele der gelernten alten Hasen/Häsinnen hier.
Zeige das du mitdenkst.
Wenn du sagst das du es nicht kannst ist ja ok.
Aber MITDENKEN zeigt du bist aktiv und willst nicht nur Hausaufgaben von den anderen gemacht bekommen
Ich frage auch viel um Hilfe und Ansätze, siehe hier.
Datensammlung Kunden
Mein Senf
Tom
Hi,
ich habe hier mal ein Code-Snippet für Dich zum Testen!
In der ersten Zeile wird der Dir-Befehl ausgewertet. Es wird in C:\ und allen Unterverzeichnissen gesucht.
Für jede gefundene PSD-Datei greift dann Zeile 2.
Besorge Dir den aktuellsten Commandline-Packer hier: https://www.7-zip.org/a/7z1900-extra.7z
Entpacke ihn und lege das Script dazu. Dann passe Zeile 2 entsprechend an.
Zeile 2 soll folgendes tun:
Jede gefundene Datei soll mit Pfad an den Packer übergeben werden.
Der Packer erzeugt ein Archiv im selben Verzeichnis, wie die Originaldatei und hängt an den Dateinamen hinter die Endung .7z.
Die Originaldatei wird durch "-sdel" durch den Packer gelöscht!
Ich habe das bei mir getestet.
Du solltest allerdings ebenfalls das Script erst in einer Testumgebung benutzen!!
Edit:
Fehlende " im Code-Snippet ergänzt.
ich habe hier mal ein Code-Snippet für Dich zum Testen!
FOR /F "TOKENS=*" %%I IN ('DIR /S /B "C:\*.psd"') DO (
C:\Programme\7-Zip\7za.exe a %%I.7z %%I -sdel
)
pause
In der ersten Zeile wird der Dir-Befehl ausgewertet. Es wird in C:\ und allen Unterverzeichnissen gesucht.
Für jede gefundene PSD-Datei greift dann Zeile 2.
Besorge Dir den aktuellsten Commandline-Packer hier: https://www.7-zip.org/a/7z1900-extra.7z
Entpacke ihn und lege das Script dazu. Dann passe Zeile 2 entsprechend an.
Zeile 2 soll folgendes tun:
Jede gefundene Datei soll mit Pfad an den Packer übergeben werden.
Der Packer erzeugt ein Archiv im selben Verzeichnis, wie die Originaldatei und hängt an den Dateinamen hinter die Endung .7z.
Die Originaldatei wird durch "-sdel" durch den Packer gelöscht!
Ich habe das bei mir getestet.
Du solltest allerdings ebenfalls das Script erst in einer Testumgebung benutzen!!
Edit:
Fehlende " im Code-Snippet ergänzt.