curlysue1985
Goto Top

Batch-Datei - Dateiname nach DelimString auslesen

Hallo zusammen,

ich beschäftigte mich erst seit kurzem mit Batch-Dateien und versuche es jetzt nach und nach zu lernen… bin also noch blutiger Anfänger. Ich habe diesen Code bei euch im Forum gefunden – er sorgt dafür, dass ein Teil vom Dateinamen (alles links vom Minus) ausgelesen und dann die Datei in den entsprechenden Ordner verschoben wird.

Ich finde diesen Ansatz und vor Allem den Code super (weil es mir enorm viel Arbeit ersparen würde), aber ich möchte es gerne so umschreiben, dass alles rechts vom Minus ausgelesen und in den entsprechenden Ordner verschoben wird. Ich dachte erst, dass man das * einfach hinter statt vor dem DelimString platziert, aber ich habe schon gelesen, dass das scheinbar nicht geht. Habt ihr zufällig einen Tipp, wie ich das einfach umsetzen kann? Meine Dateien sind alle nach dem Muster „230201 XXXXX XXXXXXX – Name_Vorname“

Tausend Dank schon mal für eure Hilfe!
Liebe Grüße
Kati

@echo off & setlocal 
set "Pfad=E:\Skripte\Ablage\Test"   
set "DelimString= - "   
pushd "%Pfad%"   
for /f "delims=" %%i in ('dir /b /a-d "*%DelimString%*.*"') do set "Name=%%i" & call :ProcessFile "%%i"   
popd 
goto :eof 
:ProcessFile 
call set "Name2=%%Name:*%DelimString%=%%"   
call set "Ordner=%%Name:%DelimString%%Name2%=%%"   
md "%Ordner%" 2>nul   
move %1 "%Ordner%"   
goto :eof

Content-ID: 5365781198

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

Ausgedruckt am: 25.11.2024 um 08:11 Uhr

5175293307
Lösung 5175293307 15.01.2023 aktualisiert um 16:33:45 Uhr
Goto Top
@echo off
set "Pfad=E:\Skripte\Ablage\Test"  
for %%a in ("%Pfad%\*-*.*") do for /f "tokens=2 delims=-" %%b in ("%%~na") do for /f %%c in ("%%b") do (  
	if not exist "%Pfad%\%%c" md "%Pfad%\%%c"  
	move "%%a" "%Pfad%\%%c\"  
)
An deiner Stelle würde ich das Batch gewurstel links liegen lassen und gleich auf die Powershell umsteigen
Get-ChildItem "E:\Skripte\Ablage\Test" -File -Filter "* - *" | move-item -Destination {(md "$($_.DirectoryName)\$(($_.Basename -split ' - ')[1])" -Force).Fullname} -verbose  

Wurstel
CurlySue1985
CurlySue1985 17.01.2023 um 18:51:02 Uhr
Goto Top
Lieber Wurstel - Tausend Dank für deine Hilfe! Ich hab mich intensiv mit dem Batch-Code von dir befasst, viel dazu gelernt, für meine Zwecke weitere angepasst... und was soll ich sagen: Es funktioniert perfekt. Bin dir echt dankbar!!!!

Danke auch für den Tipp PowerShell - habe ich noch nie mitgearbeitet, weiß aber dass es besser sein soll. Ich werde also mal lesen und versuchen zu verstehen. face-smile

Hab noch einen schönen Abend!
Kati