mr-neo
Goto Top

Batch - Dateien mehrer Ordner kopieren in jeweilige Unterordner

Hallo zusammen,

folgendes Vorhaben möchte ich durchführen. Ich denke, mit einem cmd Befehl bzw. einer *.bat Datei sollte das durchzuführen sein.

In dem Ordner /Artikel/ sind ganz viele Unterordner mit der Artikelnummer als Name

/Artikel/12340078/
/Artikel/12340079/
/Artikel/43210128/

usw.
in den jeweiligen Artikelordner sind Bilder *.jpg hinterlegt den nun in ein jeweiligen Unterordner verschoben werden sollen.

Bsp.
/Artikel/12340078/1.jpg
/Artikel/12340078/2.jpg

→ kopieren in /Artikel/12340078/WebShop/

dass soll das Skript Artikel-Ordner für Artikel-Ordner machen. (> 1.000 Ordner)

Einzelne Dateien aus Ordner X in Y kopieren bekomme ich hin, aber wie bekomme ich die Variable der unterschiedlichen Ordnernamen hin?

Vielen Dank vorweg!

Content-ID: 356252

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

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

BassFishFox
BassFishFox 27.11.2017 aktualisiert um 20:11:38 Uhr
Goto Top
Hallo,

Was hast Du denn schon als Batch/CMD/Script? Woran hapert es?

BFF
Pedant
Lösung Pedant 27.11.2017 aktualisiert um 20:35:44 Uhr
Goto Top
Hallo mr-neo,

hast Du es so gemeint?

Falls ja, dann teste es erstmal mit einer Kopie des Artikelordners.
Mach Dir noch ein Backup und prüf das Ergebnis möglichst genau.


1. Vorher

C:\Temp\Artikel\12340078\1.bmpC:\Temp\Artikel\12340078\1.jpgC:\Temp\Artikel\12340078\2.bmpC:\Temp\Artikel\12340078\2.jpgC:\Temp\Artikel\12340079\3.bmpC:\Temp\Artikel\12340079\3.jpgC:\Temp\Artikel\12340079\4.bmpC:\Temp\Artikel\12340079\4.jpgC:\Temp\Artikel\43210128\5.bmpC:\Temp\Artikel\43210128\5.jpg


2. Skript anpassen und ausführen

@echo off

cd /d "C:\Temp\Artikel"  

for /f "tokens=1" %%f in ('dir /ad /b') do (  
	md "%%f\WebShop"  
	move "%%f\*.jpg" "%%f\WebShop"  
	move "%%f\*.bmp" "%%f\WebShop"  
	move "%%f\*.png" "%%f\WebShop"  
)

Funktionsweise:
Wechsel in den Ordner "Artikel"
Liste alle Verzeichnisnamen auf (ohne deren Unterverzeichnisse)
Gehe diese Liste durch und mache jeweils:
- Unterordner "WebShop" anlegen in
- Alle JPG-Dateien nach Webshop verschieben
- Alle BMP-Dateien nach Webshop verschieben
- Alle PNG-Dateien NICHT nach Webshop verschieben, weil mit REM auskommentiert


3. Nachher

C:\Temp\Artikel\12340078\WebShop\1.bmpC:\Temp\Artikel\12340078\WebShop\1.jpgC:\Temp\Artikel\12340078\WebShop\2.bmpC:\Temp\Artikel\12340078\WebShop\2.jpgC:\Temp\Artikel\12340079\WebShop\3.bmpC:\Temp\Artikel\12340079\WebShop\3.jpgC:\Temp\Artikel\12340079\WebShop\4.bmpC:\Temp\Artikel\12340079\WebShop\4.jpgC:\Temp\Artikel\43210128\WebShop\5.bmpC:\Temp\Artikel\43210128\WebShop\5.jpg

Mach Dir ein Backup und prüf das Ergebnis möglichst genau.

Gruß Frank
Pedant
Pedant 27.11.2017 um 20:19:39 Uhr
Goto Top
Hallo BassFishFox,

Zitat von @BassFishFox:
Woran hapert es?
Wahrscheinlich an der For-Schleife.

Gruß Frank
BassFishFox
BassFishFox 27.11.2017 um 20:31:35 Uhr
Goto Top
Halloele,

Wahrscheinlich an der For-Schleife.

Kann nur der TO sagen. face-wink

Wann entsteht eigentlich die liste.txt in dem Code von Dir? face-wink

BFF
Pedant
Pedant 27.11.2017 um 20:41:28 Uhr
Goto Top
Hallo BassFishFox,

Zitat von @BassFishFox:
Wann entsteht eigentlich die liste.txt in dem Code von Dir? face-wink

...in einem anderen Skript.
Das war meinerseits ein Copy-Paste-nicht-korrekt-bereinigt-Fehler.
Quelle: BATCH Variable aus .txt Datei ohne Leerzeichen am Ende

if exist liste.txt del liste.txt
Ich habe die Zeile hier jetzt rausgeworfen.

Gruß und Dank
Frank
mr-neo
mr-neo 28.11.2017 um 12:00:20 Uhr
Goto Top
Super. Vielen Dank. So funktioniert das.

In der Tat hatte ich den Schritt mit den flexiblen Ordnern nicht umgesetzt bekommen.
Pedant
Pedant 28.11.2017 um 12:29:33 Uhr
Goto Top
Hallo mr-neo,

schön, dass es funktioniert und danke für die Rückmeldungen.

"For" kann Datei/Directorylistings durchlaufen, aber auch eine Gruppe von vorgegebenen Werten
oder einen Dateiinhalt zeilenweise oder die Ausgabe von anderen Befehlen.

Wenn es Dich weitergehend interessiert...
Tutorial zur FOR-Schleife
(Dieses Tutorial hat mir meine langjährigen "Berührungsängste" genommen.)

Gruß Frank