Replacement in string

Antworten
noBat
Beiträge: 2
Registriert: 05 Dez 2018, 09:35

Replacement in string

Beitrag von noBat »

Hallo,

ich möchte in einem OPSI setupscript Teile einer string Variable ersetzen, konkret will ich in einem Dateipfad alle Backslashes durch zwei ersetzen: zB: C:\Program Files\foo wird zu C:\\Program Files\\foo da ich dies in einer client-spezifischen config Datei benötige.
Allerdings kenne ich den Pfad nicht a priori, sondern erhalte diesen mittels Umgebungsvariable %ProgramFiles%, deshalb muss das replacement dynamisch passieren.
Meine setup.opsiscript sieht etwa so aus:

Code: Alles auswählen

[Initial]
encoding=UTF-8
requiredWinstVersion >= 4.11.4.3

DefVar $myPath$
Set $myPath$ = "%ProgramFiles%\foo" 

[Actions]
Dosbatch_install

[Dosbatch_install]
ERSETZE \ mit \\ in $myPath$
echo $myPath$ >> C:\client.conf
Allerdings scheinen Lösungen wie https://stackoverflow.com/questions/277 ... batch-file nicht zu klappen, ich vermute da die Prozentzeichen mit der OPSI Notation für Konstanten in die Quere kommen?

Ich habe folgende Varianten probiert:

Code: Alles auswählen

call set myPath=%%myPath:\=\\%%
bzw.
call set myPath=%%$myPath$:\=\\%%
und

Code: Alles auswählen

setlocal ENABLEDELAYEDEXPANSION
call set myPath=%myPath:\=\\%
bzw.
call set myPath=%$myPath$:\=\\%
leider ohne Erfolg.

Für Hilfe wäre ich dankbar!
uncle_scrooge
Beiträge: 650
Registriert: 21 Feb 2012, 12:03
Wohnort: Mainz

Re: Replacement in string

Beitrag von uncle_scrooge »

StringReplace is your friend.

Code: Alles auswählen

[Initial]
encoding=UTF-8
requiredWinstVersion >= 4.11.4.3

DefVar $myPath$
DefVar $mypath2$

[Actions]

Set $myPath$ = "%ProgramFilesDir%\foo"
set $mypath2$ = stringReplace ($mypath$,"\","\\")

Dosbatch_1

[Dosbatch_1]
echo $mypath2$ >> d:\nix.log
Nicht schön, aber funktioniert.
noBat
Beiträge: 2
Registriert: 05 Dez 2018, 09:35

Re: Replacement in string

Beitrag von noBat »

Super, danke für die schnelle Hilfe!
Antworten