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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5365781198
Url: https://administrator.de/contentid/5365781198
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
2 Kommentare
Neuester Kommentar
@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\"
)
Get-ChildItem "E:\Skripte\Ablage\Test" -File -Filter "* - *" | move-item -Destination {(md "$($_.DirectoryName)\$(($_.Basename -split ' - ')[1])" -Force).Fullname} -verbose
Wurstel