mayofant
Goto Top

Hilfe bei Batchdatei um Ordnerstruktur abzufragen und Dateien zu verschieben.

Hallo Gemeinde,

ich bräuchte mal Eure Profihilfe face-smile

Ich benötige eine Batchdatei, welche die Ordnerstruktur einer Festplatte nach bestimmten Dateien durchsucht und diese dann in einen neuen Unterordner verschiebt.

Das finden und kopieren der Dateien und das Anlegen des Unterordners ist grundsätzlich kein Problem, wenn ich denn in einem Ordner suche. Aber das Durchsuchen der gesamten Ordnerstruktur nach den Dateien lässt mich verzweifeln face-sad

Kann mir da bitte jemand helfen?

PS: Bitte Eure (hoffentlich zahlreichen) Antworten für Dummies formulieren face-smile

VIELEN DANK VORAB!

Content-Key: 235026

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

Printed on: April 18, 2024 at 10:04 o'clock

Member: bastla
Solution bastla Apr 09, 2014 updated at 16:42:25 (UTC)
Goto Top
Hallo mayofant!

Passend zur Deiner eher allgemein formulierten Fragestellung ein Beispiel: Alle .txt-Dateien unterhalb von "D:\Testordner" erhältst Du mit
for /f "delims=" %%i in ('dir /s/b/a-d "D:\Testordner\*.txt"') do echo "%%i"
Grüße
bastla
Member: mayofant
mayofant Apr 09, 2014 at 15:08:42 (UTC)
Goto Top
Zitat von @bastla:

Hallo mayofant!

Passend zur Deiner eher allgemein formulierten Fragestellung ein Beispiel: Alle .txt-Dateien unterhalb von
"D:\Testordner" erhältst Du mit
for /f "delims=" %%i in ('dir /s/b/a-d "D:\Testordner\*.txt"') do
> echo "%%i"
> 
Grüße
bastla

Danke Bastla!

Das hilft mir weiter!
Wie ich das jetzt aber verstehe bin ich mit Deiner Lösung nicht "in" die Ordner gewechselt (CD), sondern habe nur deren Inhalt durchsucht, richtig?
Wie würde ich dann im nächsten Schritt im Ordner, welcher die gesuchte Datei enthält, einen Unterordner erzeugen (z.B. md BEISPIEL) und die gefundene Datei dorthin verschieben? (MOVE)

Meine bisherigen Lösungsansätze funktionierten über "Ordnerwechsel" (CD), so dass ein Anlegen und Verschieben kein Problem war.

Danke vorab face-smile
Member: bastla
Solution bastla Apr 09, 2014 updated at 16:42:36 (UTC)
Goto Top
Hallo mayofant!

Den Ordner, in dem sich die gefundene Datei befindet, erhältst du mit "%%~dpi" (siehe "for /?" ziemlich gegen Ende) - demzufolge etwa so:
for /f "delims=" %%i in ('dir /s/b/a-d "D:\Testordner\*.txt"') do echo md "%%~dpiBEISPIEL" && echo move "%%i" "%%~dpiBEISPIEL\"
Die beiden "echo" dienen dem gefahrlosen Testen, da so die Befehle nur angezeigt, aber nicht ausgeführt werden - lässt Du diese "echo" weg, werden tatsächlich Ordner erstellt / Dateien verschoben ...

Grüße
bastla
Member: mayofant
mayofant Apr 09, 2014 at 15:39:53 (UTC)
Goto Top
Bastla Du bist der Beste!

Da komm ich mit meinen cd-md-Imännchen-Wissen natürlich nicht gegen an ;)

Ein kleines Problemchen hab ich jetzt noch. Sobald einmal ein BEISPIEL Ordner erzeugt wurde, kann keine weitere Datei in denselben Ordner verschoben werden. Ist ja auch klar, wenn vorhanden meckert Windows das Ordner existiert und setzt dann auch den folgenden MOVE-Befehl nicht mehr um. Habs schon mit "IF EXIST" versucht, klappt aber nicht so richtig face-sad

Vielen vielen Dank, hast mir sehr geholfen!
Member: bastla
Solution bastla Apr 09, 2014 updated at 19:14:19 (UTC)
Goto Top
Hallo mayofant!
Sobald einmal ein BEISPIEL Ordner erzeugt wurde, kann keine weitere Datei in denselben Ordner verschoben werden.
Wenn das Verschieben nicht vom erfolgreichen Erstellen des Ordners abhängig sein soll, einfach nur "&" zum Verknüpfen der Befehle verwenden (bei "&&" wird die folgende Anweisung nur ausgeführt, wenn der vorhergehende Befehl mit einem Errorlevel 0 beendet wurde) - gleich "scharf geschaltet" dann so:
for /f "delims=" %%i in ('dir /s/b/a-d "D:\Testordner\*.txt"') do md "%%~dpiBEISPIEL" 2>nul & move "%%i" "%%~dpiBEISPIEL\"
Grüße
bastla
Member: mayofant
mayofant Apr 09, 2014 at 20:41:57 (UTC)
Goto Top
Super, nun bin ich wunschlos glücklich!

Vielen Dank, habe viel gelernt face-smile