String nach einem Zeichen einer Variablen zuweisen
Hallo Zusammen
ich habe als Beispiel folgenden String der mehrere Unterstriche beinhaltet.
"Text AB19_001234_Muster_123-Gr1-234567"
Ich möchte alles was nach dem dem letzten Unterstrich steht einer Variablen zuweisen.
Aus dem Forum haben ich folgende Zeile
set "nummer=%string:*_=%"
Mein Problem ist, in der Variablen "nummer" steht alles nach dem ersten Unterstrich
"001234_Muster_123-Gr1-234567"
Wir muss ich die Zeile anpassen?
Vielen Dank
Gruß
Iki
ich habe als Beispiel folgenden String der mehrere Unterstriche beinhaltet.
"Text AB19_001234_Muster_123-Gr1-234567"
Ich möchte alles was nach dem dem letzten Unterstrich steht einer Variablen zuweisen.
Aus dem Forum haben ich folgende Zeile
set "nummer=%string:*_=%"
Mein Problem ist, in der Variablen "nummer" steht alles nach dem ersten Unterstrich
"001234_Muster_123-Gr1-234567"
Wir muss ich die Zeile anpassen?
Vielen Dank
Gruß
Iki
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 502070
Url: https://administrator.de/contentid/502070
Ausgedruckt am: 23.11.2024 um 13:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo @iki,
Sinn und Zweck des Ausdrucks
Um den Teil von
Grüße
Friemler
Sinn und Zweck des Ausdrucks
%string:*_=%
ist es, alle Zeichen vor und inklusive dem ersten _
durch nichts zu ersetzen, insofern passiert genau das, was passieren soll.Um den Teil von
string
zu erhalten, der nach dem letzten _
steht, musst Du eine Schleife drumherum wickeln, in der solange Zeichen vom Anfang von string
abgeschnitten werden, bis kein _
mehr übrig ist.@echo off & setlocal
set "String=Text AB19_001234_Muster_123-Gr1-234567"
:LoopStart
set "TmpString=%String:*_=%"
if "%TmpString%" equ "%String%" goto :LoopEnd
set "String=%TmpString%"
goto :LoopStart
:LoopEnd
echo %String%
Grüße
Friemler
Moin,
das geht auch kürzer, sofern dein benötigter Teil immer nach dem 3. _ kommt:
Wenn das mit dem _ variabel ist, würde ich Friemlers Ansatz wieder geeignet sein.
Alternativ kannst du dir auch seine Umfangreiche Anleitung zum Thema FOR /F anschauen:
FOR F mit einer variabelen Anzahl Tokens
Gruß
em-pie
das geht auch kürzer, sofern dein benötigter Teil immer nach dem 3. _ kommt:
@echo off
set string=Text AB19_001234_Muster_123-Gr1-234567
for /F "tokens=4 delims=_" %%a in ("%string%") do (
set newString=%%a
)
echo %newString%
Wenn das mit dem _ variabel ist, würde ich Friemlers Ansatz wieder geeignet sein.
Alternativ kannst du dir auch seine Umfangreiche Anleitung zum Thema FOR /F anschauen:
FOR F mit einer variabelen Anzahl Tokens
Gruß
em-pie