143851
Goto Top

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.

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.

Content-Key: 564645

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

Printed on: April 23, 2024 at 08:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Apr 12, 2020 updated at 09:40:50 (UTC)
Goto Top
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
Mitglied: 143851
143851 Apr 12, 2020 at 09:52:57 (UTC)
Goto Top
Hallo
Danke für deine Antwort aber es hilft mir nicht weiter, da ich NULL Ahnung von Programierung etc habe.

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.

Vielen Dank
Member: Penny.Cilin
Penny.Cilin Apr 12, 2020 at 10:35:38 (UTC)
Goto Top
Zitat von @143851:

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.
Etwas Eigeninitiative solltest Du schon zeigen.

Und hier etwas Lesefutter bzgl. Windows Batch:

Vielen Dank

Gruss Penny.
Member: Lochkartenstanzer
Lochkartenstanzer Apr 12, 2020 updated at 10:49:02 (UTC)
Goto Top
Zitat von @143851:

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. face-smile

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. face-smile

lks
Mitglied: 143851
143851 Apr 12, 2020 updated at 11:03:46 (UTC)
Goto Top
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.

Vielen Dank

PS: Das Skript was ich verwende habe ich nach Tagelangem suchen im Web gefunden, also NICHT von mir!!
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 12, 2020 updated at 11:30:02 (UTC)
Goto Top
Moin und frohe Ostern.

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 ...
Member: Penny.Cilin
Penny.Cilin Apr 12, 2020 at 11:24:21 (UTC)
Goto Top
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.
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 gerade weil es ein Parameter ist, solltest Du es hinbekommen.

Vielen Dank

Gruss Penny.
Mitglied: 143851
143851 Apr 12, 2020 at 11:37:05 (UTC)
Goto Top
Hallo
Es werden mir nur 3 leere zips im Root erzeugt. hmmmm??
Mitglied: 143851
143851 Apr 12, 2020 at 11:39:34 (UTC)
Goto Top
Hallo

Nei ich weis nicht was der Code macht, deswegen suche ich ja Hilfe!
Und das mit der Zeit, bis ich das alles erlernt habe, habe ich das auch händisch erldigt. ;-(
Member: Lochkartenstanzer
Lochkartenstanzer Apr 12, 2020 updated at 11:44:12 (UTC)
Goto Top
Zitat von @143851:

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
Mitglied: 143851
143851 Apr 12, 2020 at 11:51:39 (UTC)
Goto Top
@lochkarten...

Sorry ich verstehe nichts von dem was da steht. Ich bin KEIN Programierer etc. und habe NULL Ahnung von dem ganzen Zeugs.

Wie ich schrieb, habe ich den im ersten Beitrag gezeigten BATCH auch nur im Web gefunden.
Ich bin nicht zu Faul oder sonst was das ist einfach nicht meine Welt, deswegen suche ich eine einfache schnelle Hilfe.
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 12, 2020 at 12:35:45 (UTC)
Goto Top
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?
Member: Lochkartenstanzer
Lochkartenstanzer Apr 12, 2020 at 12:39:55 (UTC)
Goto Top
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?

Das sollte er alles einem Dienstleister erzählen. Wir sind keine Dressurpferde, die hüpfen, wenn einer spring sagt.

lks
Mitglied: 143851
143851 Apr 12, 2020 at 13:00:36 (UTC)
Goto Top
Hallo

Es sollen alle " psd-Dateien " auf mehreren Festplatten gezipt werden.

Ich habe eine Ordner-Struktur mit verschiedensten Unterordner, dort liegen jeweils die psd und jpg - Dateien

Um nun Platz zu sparen, sollen die jeweiligen psd-Dateien ( in dem jeweiligen Verzeichnis ) gezippt werden und natürlich darin verbleiben.

Das skript welches ich ganz oben gepostet habe ( NICHT von mir ) macht das ja, NUR das ich es erst in jedes Verzeichnis reinkopieren muss, was auf dauer sehr viel Zeit in Anspruch nimmt und ich so nicht wirklich andere Sachen erledigen kann.

Deswegen suche ich eine Lösung um das was ich habe, quasi aus dem Root ( hoffe das stimmt so ) ablaufen zu lassen.

Wie ich schon schrieb, habe ich nicht den Skill mir das alles anzueignen um das selber zu programmieren.
Member: Penny.Cilin
Penny.Cilin Apr 12, 2020 at 13:14:09 (UTC)
Goto Top
'nuff said.
Member: TomTomBon
TomTomBon Apr 12, 2020 at 17:19:26 (UTC)
Goto Top
Moin Moin,

Ich erarbeite und sammle mir auch jedes Skript zusammen.
Mittlerweile sehr viel von meinen eigenen Skripten face-wink

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 /?
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 face-wink

Ich frage auch viel um Hilfe und Ansätze, siehe hier.
Datensammlung Kunden

Mein Senf
Tom
Member: TomTomBon
TomTomBon Apr 12, 2020 at 17:23:08 (UTC)
Goto Top
Beschäftige dich einmal mit Robocopy.

Der beherrscht das durchsuchen, Filtern, verschieben/kopieren/spiegeln (nach Anforderung) und Loggen dabei.
Und das auch möglich mit einem Zeitplan (alle x min).

Und dann zippe das ganze regelmäßig vielleicht durch eine Automatische Aufgabe.
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 12, 2020, updated at Apr 14, 2020 at 11:47:35 (UTC)
Goto Top
Hi,

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.
Mitglied: 143851
143851 Apr 13, 2020 at 08:10:03 (UTC)
Goto Top
Hallo "beidermacht...:"

Erstmal Danke

Ich habe das nun angepasst und eine Testumgebung geschaffen.

Bei mir nun Festplatte " z " dort ein Verzeichnis ( Test2020 ) in dem 4 weitere Verzeichnisse ( Jan Feb Mar Apr ) liegen, in denen dann die "psd-Dateien " sind.

Das Batch liegt im Hauptverzeichnis von Festplatte Z. Ich lasse es als Admin laufen, es poppt kurz ein schwarzes Fenster auf aber ansonsten tut sich nix.
Kein neues zip in den Ordnern etc...
Mitglied: 143851
143851 Apr 13, 2020 at 08:17:18 (UTC)
Goto Top
Hallo Tomtom

Habe mir das Robocopy angesehen. Das sind alles genau die gleichen "Böhmischen Dörfer"
Ich bräuchte wohl Jahre bis ich weis was die einzelnen Befehle dort machen.
Dann kann ich auch weiterhin das erste Skript immer händisch in jedes Verzeichniss kopieren usw...

Trotzdem Danke
Mitglied: 143851
143851 Apr 13, 2020 at 09:56:05 (UTC)
Goto Top
Hallo Nochmals "beidermacht " ...

Ich glaube ich habs hinbekommen.
Da fehlten wohl die " hinter psd ....'DIR /S /B "Z:\*.psd"'

Ich lasse nochmal einige Tests laufen.
Danke
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 13, 2020 at 10:51:08 (UTC)
Goto Top
Danke.
Es war schon spät.
Mitglied: 143851
143851 Apr 14, 2020 at 10:27:23 (UTC)
Goto Top
@ beidermachtvon.....

Das hat nun funktioniert. Habe es die Nacht über laufen lassen und alles psd sind einzeln gezipt

Klasse DANKE !!
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 14, 2020 at 11:45:05 (UTC)
Goto Top
Super.

Dann setze bitte noch den Trööt als gelöst.