Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Per batchschleife Dateinamen zerlegen

staubwolke / 8 Antworten / Baumansicht Nickles

Moin Leutz,

hab eine Frage zu einem Problem in einer batch Datei

ich möchte mit zB einem DIR *.flac die FLAC Dateien eines Verzeichniss listen die nach dem Schema
"01 - Interpret - Titel.erw" aufgebaut sind und die Namensteile als Variable weiter verwenden.

Wie kann ich innerhalb einer Schleif den Dateinamen in die drei Bestandteile zu Variablen separieren?
Mit dem folgenden Ansatz kann ich zB prima einen übergebenen Namen und in 4 Teile auftrennen
wenn der Trenner ein ";" ist

FOR /F "tokens=2,3,4* delims=;" %%i in ("%~1") do (
echo %%i
echo %%j
echo %%k
echo %%l
)
aber die "delims" Option lässt leider nur einzelne Trennzeichen zu und keine Kombinationen,
das Problem ist nun der von mir ungünstig gewählte Trenner " - " also die drei Zeichen

Meine Idee wäre jetzt vorher das " - " durch ein ";" zu ersetzen entweder in der Schleife
oder auch die Dateien per Batch vorher umbenennen in "01;Interpret;Titel"
aber dazu habe ich leider keinen Ideenansatz ...

kann mir jemand einen Tip geben wie ich das Problem lösen kann???

Staubwolke

bei Antwort benachrichtigen
peterson staubwolke „Per batchschleife Dateinamen zerlegen“
Optionen

Ich weiß nicht genau, was Du willst, aber ich löse so etwas anders.

Einfach das nackte DIR in eine Textdatei und dann mit Excel die Daten aufteilen.

bei Antwort benachrichtigen
staubwolke peterson „Ich weiß nicht genau, was Du willst, aber ich löse so etwas anders. Einfach...“
Optionen

hi
danke für den Hinweis aber ich möchte die "Teilstrings" als Variablen innerhalb der batch weiter verarbeiten,
um dann damit eine *.cue Datei zu erstellen. Die nötigen Infos dazu sollen aus dem Pfad/Dateiname String extrahiert werden.

wegen der Lesbarkeit hatte ich mich mal für den Trenner " - " entschieden, was aber nun mit FOR /F... delims" Probleme macht,
weil das so nicht ansprechbar ist und das möchte ich innerhalb der batch lösen / umschiffen.

ich hoffe da hat noch jemand eine Idee ......

Staubwolke

bei Antwort benachrichtigen
peterson staubwolke „hi danke für den Hinweis aber ich möchte die Teilstrings als Variablen...“
Optionen
bei Antwort benachrichtigen
staubwolke peterson „http://de.wikibooks.org/wiki/Batch-Programmierung:_Erweiterungen_unter_Windows_NT “
Optionen

hi
ja das geht schon in die Richtung mit "set str=%str:~-1%" könnte ich ein Leerzeichen am Anfang einer Variablen entfernen
aber das genügt leider noch nicht um mein Vorhaben zu realisieren :(

So wie ich es jetzt sehe 'muss' ich irgendwie die Batch ungeeigneten " - " Trenner, in ";" wandeln, dann ist mit der Batch alles möglich was ich vorhabe.

Also die Frage ist jetzt
wie kann ich per Batch in einen bzw in mehreren Dateinamen ein " - " durch ";" ersetzen, so dass temporär aus
"01 - Dumdideldum - Das Ding-Dong.flac"
"01;Dumdideldum;Das Ding-Dong.flac"
wird

hat da jemand eine Idee?

Staubwolke

bei Antwort benachrichtigen
peterson staubwolke „hi ja das geht schon in die Richtung mit set str str: -1 könnte ich ein...“
Optionen

Vielleicht hilft dieses im Gedankengang weiter.

http://www.supportnet.de/listthread/1481757

Dort werden per Batch Textstellen ersetzt.
Ob Du das verwenden kannst, weiß ich nicht.

bei Antwort benachrichtigen
peterson staubwolke „hi ja das geht schon in die Richtung mit set str str: -1 könnte ich ein...“
Optionen

Schau mal hier unten in "ab Windows XP".

http://www.axel-hahn.de/axel/page_compi/bat_tipps.htm#exchgtxt1

Dort werden in den Namen die Umlaute ersetzt.
Das kannst Du vielleicht verwenden.

bei Antwort benachrichtigen
staubwolke peterson „Schau mal hier unten in ab Windows XP ....“
Optionen

hi peterson,

da war die richtige Info bei,
wenn ich erstmal ein funktionierendes Beispiel sehe wird oft erheblich klarer wo es, wie lang geht und der ahh Effekt zeigt sich :)
Wenn man erst einmal weis wie' geht dann ist's auch ganz einfach ;)
mit zweimal "set" kann man Teilstrings ersetzen

set oldname=01 - name - titel.flac
set newname=%oldname: - =;%

und %newname% ist dann "01;name;titel.flac"

genau das wonach ich gesucht habe

also allerbesten Dank für Deine erfolgreiche und intensive Hilfe

Staubwolke

bei Antwort benachrichtigen
peterson staubwolke „hi peterson, da war die richtige Info bei, wenn ich erstmal ein funktionierendes...“
Optionen

Nun ja, ich habe letztendlich nur für Dich im Internet gesucht.
Ich hatte mit solchen Problemen auch noch nie zu tun.

Das hättest Du sicherlich auch gefunden. ;O)

bei Antwort benachrichtigen