cotopaxi
Goto Top

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

Content-Key: 133087

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

Printed on: April 25, 2024 at 23:04 o'clock

Member: bastla
bastla Jan 10, 2010 at 20:02:45 (UTC)
Goto Top
Hallo cotopaxi!

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
Das "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"  
    )
)
[/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
Member: cotopaxi
cotopaxi Jan 10, 2010 at 20:33:16 (UTC)
Goto Top
Lieber basla,

der HAMMER! Ich bin super happy mit deiner schnellen Antwort.
Alles läuft wie "Länderspiel".

Vielen DANK!!!
Member: bastla
bastla Jan 10, 2010 at 20:36:44 (UTC)
Goto Top
Hallo cotopaxi!

Freut mich face-smile (wobei ich noch auf meine am Ende angefügte Überlegung hinweisen möchte) ...

Grüße
bastla
Member: cotopaxi
cotopaxi Jan 10, 2010 at 20:41:16 (UTC)
Goto Top
Hallo bastla.

stimmt die erste Version ist für hinzukommende Titel günstiger.

Noch mal vielen Dank.

Gruß
cotopaxi
Member: cotopaxi
cotopaxi Jan 10, 2010 at 20:45:00 (UTC)
Goto Top
Hallo bastla,

da fällt mir noch siedend heiß ein, dass doch die eigentlichen txt-Dateien in die jeweiligen Verzeichnisse kopiert werden sollen.
Ist das machbar?

gruß
cotopaxi
Member: bastla
bastla Jan 10, 2010 at 20:54:07 (UTC)
Goto Top
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
md "%Basis%\%Kuenstler%\%DName%" 2>nul && copy %1 "%Basis%\%Kuenstler%\%DName%\"
ersetzen, und falls Du doch verschieben wolltest, aus dem "copy" ein "move" machen ...

Grüße
bastla
Member: cotopaxi
cotopaxi Jan 10, 2010 at 21:14:14 (UTC)
Goto Top
Hallo bastla,

erschreckend, wie super das in diesem Forum funktioniert, da fällt mir nichts mehr ein.
Kopieren ist in der Tat nicht so sinnvoll. Habe wie du anmerkst einfach move verwendet.

1000 Dank!

Gruß
cotopaxi