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-Key: 202537

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

Printed on: April 25, 2024 at 14:04 o'clock

Member: TsukiSan
TsukiSan Feb 28, 2013 at 11:12:32 (UTC)
Goto Top
Wie kann ich es machen, dass am Anfang Alles einschließlich des Doppelpunktes verschwindet?

Eventuell nur den : als Delimeter setzen?

Gruss
Tsuki
Member: goodbytes
goodbytes Feb 28, 2013 at 11:14:57 (UTC)
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
Member: andimue
andimue Feb 28, 2013 updated at 11:18:49 (UTC)
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
Member: Pjordorf
Pjordorf Feb 28, 2013 at 12:09:23 (UTC)
Goto Top
Hallo,

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

Gruß,
Peter
Member: miniversum
miniversum Feb 28, 2013 at 14:27:03 (UTC)
Goto Top
Hallo
Es kann noch einfacher sein:
set string=%string:CODE-128:=%
Member: bastla
bastla Feb 28, 2013 at 23:29:34 (UTC)
Goto Top
... und noch flexibler:
set "string=%string:*:=%"
Grüße
bastla
Member: bastla
bastla Feb 28, 2013 at 23:40:25 (UTC)
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
Member: andimue
andimue Mar 01, 2013 at 08:35:06 (UTC)
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
Member: bastla
bastla Mar 01, 2013 at 16:36:11 (UTC)
Goto Top
Hallo andimue!

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

Grüße
bastla
Member: goodbytes
goodbytes Mar 04, 2013 at 08:27:35 (UTC)
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:*:=%"  
Member: dorRicoo
dorRicoo Nov 24, 2016 at 19:36:23 (UTC)
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.
Member: bastla
bastla Nov 26, 2016 at 20:01:24 (UTC)
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