woswasih
Goto Top

Dateien in Unterordner anhand Dateinamen mit Trennzeichen verschieben

Grüß Euch!
Ich glaub ich habe gerade eine Knopf im Kopf und stehe vor folgenden Problem:

Ordner mit hunderten Dateien mit Folgenden Aufbau: "Typ-Gruppe-Gruppe2-Inhalt.pdf (Teilweise auch mehr oder Weniger Gruppen)
Also Zb: "Audi-A4-Motor-Batterie.pdf"
Diese Datien sollen immer in den jeweiligen Ordner und Unterordner verschoben welcher in dem Beispiel wie Folgt aussieht:
"\Audi\A4\Motor\Batterie\"

Habe folgendes Script wälches eigentlich ganz gut funtkioniert, jedoch das letzte also den Ordner "Batterie" ignoriert...

@echo off 
set Quelle=C:\Datein\

for /f "delims=" %%i in ('dir /b /a-d "%Quelle%*-*.*" 2^>nul') do call :copy "%%i"  

:copy
For /f "delims=- tokens=1,2,3,4,5" %%i in (%1) do (   
	Set "ordner1=%%i"    
	Set "ordner2=%%j"   
	Set "ordner3=%%k"   
	Set "ordner4=%%l"  
	Set "ordner5=%%m"  
)

echo. %ordner1% |find /i "."  
IF %errorlevel%==0 goto :jump

echo. %ordner2% |find /i "."  
IF %errorlevel%==0 goto :nr1

echo. %ordner3% |find /i "."  
IF %errorlevel%==0 goto :nr2

echo. %ordner4% |find /i "."  
IF %errorlevel%==0 goto :nr3

echo. %ordner5% |find /i "."  
IF %errorlevel%==0 goto :nr4

:nr1
	Set pfad=%ordner1%\ 
	IF NOT exist "%pfad%" md "%pfad%"  
	MOVE /-Y "%~1" "%pfad%"  
	goto :jump	

:nr2
	Set pfad=%ordner1%\%ordner2%\
	IF NOT exist "%pfad%" md "%pfad%"  
	MOVE /-Y "%~1" "%pfad%"  
	goto :jump

:nr3
	Set pfad=%ordner1%\%ordner2%\%ordner3%\
	IF NOT exist "%pfad%" md "%pfad%"  
	MOVE /-Y "%~1" "%pfad%"  
	goto :jump

:nr4
	Set pfad=%ordner1%\%ordner2%\%ordner3%\%ordner4%\
	IF NOT exist "%pfad%" md "%pfad%"   
	MOVE /-Y "%~1" "%pfad%"  
	goto :jump

:jump

Hoffe ihr habt einen Tipp für mich!
Danke und LG!

Content-Key: 240984

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

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

Member: bastla
Solution bastla Jun 16, 2014, updated at Jun 18, 2014 at 08:01:48 (UTC)
Goto Top
Hallo woswasih!

Ich würde das etwa so versuchen:
@echo off & setlocal
set "Quelle=C:\Datein"  

for /f "delims=" %%i in ('dir /b /a-d "%Quelle%\*-*.*" 2^>nul') do set "Name=%%~ni" & call :ProcessFile "%%i"  
goto :eof

:ProcessFile
set "Pfad=%Quelle%\%Name:-=\%"  
md "%Pfad%" 2>nul  
move %1 "%Pfad%\"  
goto :eof
Grüße
bastla
Member: woswasih
woswasih Jun 18, 2014 at 08:02:39 (UTC)
Goto Top
Danke!
Habe zwar mittlweile meinen Lösungsweg angepasst gehabt, jedoch ist deiner zig fach schneller!!

Besten dank nochmal!