Variable auslesen und Text ab einem bestimmten Zeichen in eine neue Variable schreiben
Hallo liebe Gemeinde,
ich möchte aus einer Variable, die innerhalb einer FOR-Schleife deklariert wird ab einem bestimmten Zeichen den gesamten nachfolgenden Text in die gleiche oder eine andere Variable verschieben.
for /R "%download%" %%i in (*.mp3) do (
for /F "tokens=* delims=\" %%j in ("%%i") do ?)
In dieser geschachtelten FOR-Schleife lese ich alle *.mp3 Dateien ab dem Verzeichnis %download% aus. Jetzt möchte ich diese Dateien noch neu encodieren, was dann an der Stelle des ? folgen würde. Da allerdings x mp3-Dateien verarbeitet werden, bekomme ich ein Problem mit den Dateinamen, da lame nur ein statisches Ausgabeverzeichnis unterstützt.
lame -b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief "%%i" "%upload%%%k"
Dieses wäre das %upload%-Verzeichnis bspw. C:\Dokumente und Einstellungen\Upload. Nun würde das Encodieren dazu führen, dass eine mp3-Datei mit dem Namen Upload.mp3 in diesem Verzeichnis erzeugt werden würde. Daher jetzt der Gedanke, dass ich in die Variable %%k den Dateinamen des Musikstückes speichere. Die Musikdatei liegt bspw. im Verzeichnis C:\Dokumente und Einstellungen\Download\Titel1.mp3. Dazu wird nun der Teil benötigt, der hinter dem letzten \ steht. Mit anderen Worten muss ich das letzte \ oderr wenn man von hinten liest das erste \ finden und dann den Text der dahinter oder davor folgt in eine neue Variable speichern, es kann auch die gleiche sein, falls technisch möglich.
Darauf hin könnte ich beim Aufruf von lame für das Ausgabeverzeichnis diese Variable anhängen, wodurch der Name des Titels gleich bleibt.
Nur weiß ich im Moment noch nicht, wie ich das realisieren könnte.
LG
3x
ich möchte aus einer Variable, die innerhalb einer FOR-Schleife deklariert wird ab einem bestimmten Zeichen den gesamten nachfolgenden Text in die gleiche oder eine andere Variable verschieben.
for /R "%download%" %%i in (*.mp3) do (
for /F "tokens=* delims=\" %%j in ("%%i") do ?)
In dieser geschachtelten FOR-Schleife lese ich alle *.mp3 Dateien ab dem Verzeichnis %download% aus. Jetzt möchte ich diese Dateien noch neu encodieren, was dann an der Stelle des ? folgen würde. Da allerdings x mp3-Dateien verarbeitet werden, bekomme ich ein Problem mit den Dateinamen, da lame nur ein statisches Ausgabeverzeichnis unterstützt.
lame -b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief "%%i" "%upload%%%k"
Dieses wäre das %upload%-Verzeichnis bspw. C:\Dokumente und Einstellungen\Upload. Nun würde das Encodieren dazu führen, dass eine mp3-Datei mit dem Namen Upload.mp3 in diesem Verzeichnis erzeugt werden würde. Daher jetzt der Gedanke, dass ich in die Variable %%k den Dateinamen des Musikstückes speichere. Die Musikdatei liegt bspw. im Verzeichnis C:\Dokumente und Einstellungen\Download\Titel1.mp3. Dazu wird nun der Teil benötigt, der hinter dem letzten \ steht. Mit anderen Worten muss ich das letzte \ oderr wenn man von hinten liest das erste \ finden und dann den Text der dahinter oder davor folgt in eine neue Variable speichern, es kann auch die gleiche sein, falls technisch möglich.
Darauf hin könnte ich beim Aufruf von lame für das Ausgabeverzeichnis diese Variable anhängen, wodurch der Name des Titels gleich bleibt.
Nur weiß ich im Moment noch nicht, wie ich das realisieren könnte.
LG
3x
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 176182
Url: https://administrator.de/forum/variable-auslesen-und-text-ab-einem-bestimmten-zeichen-in-eine-neue-variable-schreiben-176182.html
Ausgedruckt am: 09.01.2025 um 01:01 Uhr
7 Kommentare
Neuester Kommentar
moin 3xplor3r,
wenn Du bestimmte Befehle an der CMD benutzt - hilft bei Problemen die ...
... ja die Hilfe (gleich mit den Expandierten ausortiert)
@Friemler hat das hier im Tutorial zur FOR-Schleife nochmal zusammengefasst.
Gruß Phil
wenn Du bestimmte Befehle an der CMD benutzt - hilft bei Problemen die ...
... ja die Hilfe (gleich mit den Expandierten ausortiert)
for/?|find /i "%~nxI"
@Friemler hat das hier im Tutorial zur FOR-Schleife nochmal zusammengefasst.
Gruß Phil
Moin 3xplor3r,
willkommen im Forum.
Wenn ich deine Anforderung richtig verstanden habe, dann ist keine Zwischenvariable nötig.
Ich würde es nach folgendem proof of concept am CMD-Prompt umsetzen:
[Anmerkung: Da du so lange Pfade verwendest, sollest du dir mit "Set mode con cols=166 lines=55" ein weing Platz zum Testen schaffen]
Sollte also mit dem Einzeiler, der mit "@FOR /R "%download%"...." beginnt nach Definition der drei Variablen ohne weiteren Heckmeck ausreichen.
Grüße
Biber
willkommen im Forum.
Wenn ich deine Anforderung richtig verstanden habe, dann ist keine Zwischenvariable nötig.
Ich würde es nach folgendem proof of concept am CMD-Prompt umsetzen:
[Anmerkung: Da du so lange Pfade verwendest, sollest du dir mit "Set mode con cols=166 lines=55" ein weing Platz zum Testen schaffen]
>set "lameparms=-b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief"
(=15:25:40 d:\Biber\temp=)
>set "upload=x:\oder y\upload" & set "download=C:\Dokumente und Einstellungen\Download"
(=15:25:55 d:\Biber\temp=)
>@for /R "%download%" %i in (*.mp3) do @echo DEMO: lame %lameparms% "%~i" "%upload%\%~nxi"
DEMO: lame -b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief "C:\Dokumente und Einstellungen\Download\Der letzte Titel.mp3" "x:\oder y\upload\Der letzte
tel.mp3"
DEMO: lame -b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief "C:\Dokumente und Einstellungen\Download\Der Titel 1.mp3" "x:\oder y\upload\Der Titel 1.mp3"
DEMO: lame -b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief "C:\Dokumente und Einstellungen\Download\Der Titel 2.mp3" "x:\oder y\upload\Der Titel 2.mp3"
Sollte also mit dem Einzeiler, der mit "@FOR /R "%download%"...." beginnt nach Definition der drei Variablen ohne weiteren Heckmeck ausreichen.
Grüße
Biber
[OTii]
... drei verschüchterte skizzerten Halbzeilen.... Schwamm drüber.
Zudem hat er das noch gestern am späten Nachmittag auch von bastla aufs Brot bekommen.
Biber
[/OTii]
Zitat von @Skyemugen:
[OT]Aloha Jungs!
Was'n los hier, seht ihr schon Dinge, die nicht da sind oder warum gibt niemand dem TE den Vorschlag zur Ansichtsverbesserung
der Skriptschnipsel im Forum per ##blue|## Codeformatierung?
Haben wir gesehen. Das Verfahren wurde wegen Geringfügigkeit eingestellt.[OT]Aloha Jungs!
Was'n los hier, seht ihr schon Dinge, die nicht da sind oder warum gibt niemand dem TE den Vorschlag zur Ansichtsverbesserung
der Skriptschnipsel im Forum per ##blue|## Codeformatierung?
... drei verschüchterte skizzerten Halbzeilen.... Schwamm drüber.
Zudem hat er das noch gestern am späten Nachmittag auch von bastla aufs Brot bekommen.
greetz André[/OT]
Grüße zurückBiber
[/OTii]