goodbytes
Goto Top

Batch - String abschneiden

Hallo,
ich habe einen String, von welchem ich aber nur den hinteren Teil in meiner Variable benötige.

Hier der String: CODE-128:X2012-016001-001

Hiermit ist es kein Problem:

for /F "tokens=* delims='CODE-128:'" %%i in ("%string%") do set string=%%i  

Damit erhalte ich: X2012-016001-001.

Allerdings können die Anzahl der Zeichen und auch die Zeichen selbst immer anders sein.

Wie kann ich es machen, dass am Anfang Alles einschließlich des Doppelpunktes verschwindet?

Danke schon mal im Voraus!

Gruß
Torsten

Content-ID: 202537

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

Ausgedruckt am: 05.11.2024 um 18:11 Uhr

TsukiSan
TsukiSan 28.02.2013 um 12:12:32 Uhr
Goto Top
Wie kann ich es machen, dass am Anfang Alles einschließlich des Doppelpunktes verschwindet?

Eventuell nur den : als Delimeter setzen?

Gruss
Tsuki
goodbytes
goodbytes 28.02.2013 um 12:14:57 Uhr
Goto Top
Nein, das funktioniert nicht. Die Lösung ist eigentlich viel einfacher.
Einfach nur sagen, dass ich nur den zweiten Teil möchte:

for /F "tokens=2 delims='CODE-128:'" %%i in ("%string%") do set string=%%i  

Manchmal kann es doch soooooo einfach sein... face-wink

Gruß
Torsten
andimue
andimue 28.02.2013 aktualisiert um 12:18:49 Uhr
Goto Top
Upps, da hab ich wohl zu lange zum schreiben gebraucht face-smile


Hallo TorstenB,

also ich würde als delims den : nehmen.
Folgendes funktioniert bei mir:

for /F "tokens=1,* delims=:" %%i in ("%string%") do set string=%%j  

Gruß Andi
Pjordorf
Pjordorf 28.02.2013 um 13:09:23 Uhr
Goto Top
Hallo,

Zitat von @goodbytes:
Nein, das funktioniert nicht.
Wieso funktioniert dies nicht?

Gruß,
Peter
miniversum
miniversum 28.02.2013 um 15:27:03 Uhr
Goto Top
Hallo
Es kann noch einfacher sein:
set string=%string:CODE-128:=%
bastla
bastla 01.03.2013 um 00:29:34 Uhr
Goto Top
... und noch flexibler:
set "string=%string:*:=%"
Grüße
bastla
bastla
bastla 01.03.2013 um 00:40:25 Uhr
Goto Top
Hallo TorstenB!

Für Dein Beispiel oben erhalte ich mit Deinem Ansatz
for /F "tokens=2 delims='CODE-128:'" %%i in ("%string%") do set string=%%i
als Ergebnis "0" (was ja auch klar ist, da in "CODE-128:X2012-016001-001" die Null in "X2012" das zweite Zeichen ist, dass sich von sämtlichen Delimitern (also 'CODE-128:' - die werden nämlich nicht als String, sondern als Einzelzeichen interpretiert) unterscheidet; per "for"-Schleife wäre daher die Variante von andimue zutreffend.

Grüße
bastla
andimue
andimue 01.03.2013 um 09:35:06 Uhr
Goto Top
@bastla:

Chapeau für diese sehr nette Lösung :

set "string=%string:*:=%"

Die bekommt einen Ehrenplatz in meiner Sammlung der besten/interessantesten/kreativsten Code-Schnipsel face-smile

Gruß Andi
bastla
bastla 01.03.2013 um 17:36:11 Uhr
Goto Top
Hallo andimue!

Danke für die Blumen ... face-smile

Grüße
bastla
goodbytes
goodbytes 04.03.2013 um 09:27:35 Uhr
Goto Top
Hallo an Alle!

@bastla
ja, stimmt, ich hatte meine endgültige Fassung auch dummerweise reinkopiert:

for /F "tokens=2 delims=:" %%i in ("%string%") do set string=%%j  

Damit funktioniert es bei mir bestens.

Vielen Dank an Alle !!! face-smile

Gruß
Torsten

PS: Dieser Codeschnipsel von bastla ist übrigens wirklich genial face-smile

set "string=%string:*:=%"  
dorRicoo
dorRicoo 24.11.2016 um 20:36:23 Uhr
Goto Top
Hallo zusammen!

Die Beiträge sind zwar schon älter, aber der Codeschnipsel

set "string=%string:*:=%"  

ist 1. genau das, was ich gebraucht habe um noch heute ins Bett zu kommen.

und 2. genau das, was ich gebraucht habe um diverse Bastellösungen der vergangenen 15 Jahre endgültig zu begraben! *DickerDaumen+*

Das danke für den Schnipsel war mir sogar ne Registrierung bei administrator.de wert.

Lächelnd dorRicoo.
bastla
bastla 26.11.2016 um 21:01:24 Uhr
Goto Top
Hallo dorRicoo und willkommen als Mitglied!

Ich bin zwar nicht mehr so oft hier (an der Reaktionszeit auf Deinen Kommentar leicht festzustellen face-wink), freue mich aber natürlich, wenn ich helfen konnte ... face-smile

Grüße
bastla