Ordner anhand von txt-Dateien erstellen
Liebe Spezialsiten,
mein Problem(e):
in einem Ordner sind Textdateien mit dem Format: Künstler - Titel.txt vorhanden.
Daraus sollen jeweils Ordner im selben Verzeichnis erstellt werden.
D:\Songs\Künstler - Titel
Wenn es mehrere Titel eines Künstler gibt z.B Künstler - Titel01.txt, Künstler - Titel02.txt
sollen daraus werden
D:\Songs\Künstler\Künstler - Titel01
D:\Songs\Künstler\Künstler - Titel02
Kann da jemand helfen?
Liebe Grüße
Cotopaxi
mein Problem(e):
in einem Ordner sind Textdateien mit dem Format: Künstler - Titel.txt vorhanden.
Daraus sollen jeweils Ordner im selben Verzeichnis erstellt werden.
D:\Songs\Künstler - Titel
Wenn es mehrere Titel eines Künstler gibt z.B Künstler - Titel01.txt, Künstler - Titel02.txt
sollen daraus werden
D:\Songs\Künstler\Künstler - Titel01
D:\Songs\Künstler\Künstler - Titel02
Kann da jemand helfen?
Liebe Grüße
Cotopaxi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133087
Url: https://administrator.de/contentid/133087
Ausgedruckt am: 20.11.2024 um 11:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo cotopaxi!
Etwa so:
Das "
[Edit] Da es ja keine "Künstler"-Ordner geben soll, die nur einen einzigen "Titel"-Ordner enthalten, könnte mit folgendem zweiten Batch (Achtung: Keine Testversion - die Ordnerstruktur wird sofort geändert, daher als "Basis" bitte einen Testordner mit einigen kopierten Test-Unterordnern verwenden!) der gewünscht Zustand hergestellt werden:
[/Edit]
Noch zu überlegen: Was soll in Zukunft geschehen, wenn ein weiterer Titel eines Künstlers, von dem es bisher nur einen Titel gab, hinzukommt? Insofern wäre vielleicht die einheitliche Struktur "D:\Songs\Künstler\Künstler - Titel" auch für (derzeit) einzelne Titel sinnvoll (und der zweite Batch entbehrlich).
Grüße
bastla
Etwa so:
@echo off & setlocal
set "Basis=D:\Songs"
for %%i in ("%Basis%\*.txt") do set "DName=%%~ni" & call :ProcessFile "%%i"
pause
goto :eof
:ProcessFile
for /f "delims=§" %%a in ("%DName: - =§%") do set "Kuenstler=%%a"
echo md "%Basis%\%Kuenstler%\%DName%" 2>nul
goto :eof
echo
" vor dem "md
" sorgt dafür, dass nur die Befehle zum Erstellen der Ordner angezeigt, die Ordner aber noch nicht erstellt werden - wenn alles vernünftig aussieht, einfach das "echo
" entfernen (die Zeile "pause
" wird dann eigentlich auch nicht mehr benötigt) ...[Edit] Da es ja keine "Künstler"-Ordner geben soll, die nur einen einzigen "Titel"-Ordner enthalten, könnte mit folgendem zweiten Batch (Achtung: Keine Testversion - die Ordnerstruktur wird sofort geändert, daher als "Basis" bitte einen Testordner mit einigen kopierten Test-Unterordnern verwenden!) der gewünscht Zustand hergestellt werden:
@echo off & setlocal
set "Basis=D:\SongsTest"
for /d %%i in ("%Basis%\*.*") do (
for /f %%a in ('dir /ad "%%i"^|findstr "Verzeichnis(se),"') do if "%%a"=="3" (
for /d %%f in ("%%i\*.*") do move "%%f" "%Basis%\"
if not errorlevel 1 rd "%%i"
)
)
Noch zu überlegen: Was soll in Zukunft geschehen, wenn ein weiterer Titel eines Künstlers, von dem es bisher nur einen Titel gab, hinzukommt? Insofern wäre vielleicht die einheitliche Struktur "D:\Songs\Künstler\Künstler - Titel" auch für (derzeit) einzelne Titel sinnvoll (und der zweite Batch entbehrlich).
Grüße
bastla
Hallo cotopaxi!
Ich hatte mich auch schon gefragt, was mit diesen Dateien weiter passieren sollte - meine Antwort wäre allerdings "Verschieben" gewesen ...
Zum Kopieren die Zeile 10 durch
ersetzen, und falls Du doch verschieben wolltest, aus dem "
Grüße
bastla
Ich hatte mich auch schon gefragt, was mit diesen Dateien weiter passieren sollte - meine Antwort wäre allerdings "Verschieben" gewesen ...
Zum Kopieren die Zeile 10 durch
md "%Basis%\%Kuenstler%\%DName%" 2>nul && copy %1 "%Basis%\%Kuenstler%\%DName%\"
copy
" ein "move
" machen ...Grüße
bastla