lorus11
Goto Top

BATCH - dynamische String Substitution

Hallo Zusammen,

ich versuche gerade eine dynamische String Zerlegung nach dem Schema %string:str1=str2% hinzubekommen.
Wenn str2 eine Variable ist, funktioniert das Ganze auch, allerdings nicht wenn str1 Eine ist.

@echo off
setlocal enabledelayedexpansion

set string=abcd12345
set str1=abcd
set str2=wxyz

set string_1=%string:abcd=!str2!%
set string_2=%string:!str1!=wxyz%
set string_3=%string:!str1!=!str2!%

set str



Ausgabe:
string_1 = wxyz12345 --> Funktioniert
string_2 = abcd12345 --> Funktioniert nicht
string_3 = abcd12345 --> Funktioniert nicht


Wo liegt hier der Fehler?


Grüße,

Lorus

Content-Key: 150599

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

Printed on: April 23, 2024 at 08:04 o'clock

Member: bastla
bastla Sep 08, 2010 at 12:46:36 (UTC)
Goto Top
Hallo lorus11!

Eine Antwort auf Deine konkrete Frage habe ich zwar gerade nicht zu bieten, aber:
@echo off & setlocal
set string=abcd12345
set str1=abcd
set str2=wxyz

call set string_1=%%string:abcd=%str2%%%
call set string_2=%%string:%str1%=wxyz%%
call set string_3=%%string:%str1%=%str2%%%

set str
Grüße
bastla
Member: lorus11
lorus11 Sep 08, 2010 at 15:33:54 (UTC)
Goto Top
Super, so funktionierts natürlich auch.

Bin in der Zwischenzeit allerdings auch noch auf eine weitere Lösung gestoßen, die ich nicht vorenthalten möchte.

@echo off
setlocal enabledelayedexpansion

set string=abcd12345
set str1=abcd
set str2=wxyz

set string_1=!string:abcd=%str2%!
set string_2=!string:%str1%=wxyz!
set string_3=!string:%str1%=%str2%!

set str
Member: pieh-ejdsch
pieh-ejdsch Sep 08, 2010 at 16:38:46 (UTC)
Goto Top
moin,
eine andere möglichkeit
@echo off

set "string=abcd%12345"  
set "str1=abcd%"  
set "str2=!wxyz"  

for /f "tokens=*" %%i in ("%str1%=%str2%") do (  
	call set "string=%%string:%%i=%%j%%"  
	setlocal enabledelayedexpansion
	for /f "tokens=*" %%j in ("!string!") do endlocal&echo %%j  
)

Gruß Phil