iki
Goto Top

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

Content-Key: 502070

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

Ausgedruckt am: 29.03.2024 um 02:03 Uhr

Mitglied: Friemler
Friemler 06.10.2019 um 12:58:08 Uhr
Goto Top
Hallo @iki,

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
Mitglied: em-pie
em-pie 06.10.2019 um 13:30:38 Uhr
Goto Top
Moin,

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