DosInAnIcon - Prozentzeichen escapen

Antworten
holgerv
Beiträge: 288
Registriert: 20 Aug 2012, 09:35

DosInAnIcon - Prozentzeichen escapen

Beitrag von holgerv »

Hallo,

ich will per opsi-winst eine .cmd-Datei erstellen, die wie folgt aussieht:

Code: Alles auswählen

set configdir1="C:\Program Files (x86)\MeinProgramm\config1"
set userconfigdir="D:\MeinProgramm"
if not exist %userconfigdir% xcopy /e /h /r /y %configdir1% %userconfigdir%\
"C:\Program Files (x86)\MeinProgramm\run.exe"
Dazu verwende ich folgenden Code.

Code: Alles auswählen

DefVar $InstallDir$
DefVar $StartScript$
DefVar $UserConfigDir$
DefVar $ExecutableFile$
Set $InstallDir$ = "%ProgramFiles32Dir%\MeinProgramm"
Set $StartScript$ = "StarteMeinProgramm.cmd"
Set $UserConfigDir$ = 'D:\MeinProgramm'
Set $ExecutableFile$ = $InstallDir$ + "\run.exe"

DosInAnIcon_Create_Start_Script /SysNative

[DosInAnIcon_Create_Start_Script]
echo set configdir1="$InstallDir$\config1" >  "$InstallDir$\$StartScript$"
echo set userconfigdir="$UserConfigDir$" >> "$InstallDir$\$StartScript$"
echo if not exist %userconfigdir% xcopy /e /h /r /y %configdir1% %userconfigdir%\ >> "$InstallDir$\$StartScript$"
echo "$ExecutableFile$" >> "$InstallDir$\$StartScript$"
Das funktioniert leider nicht. Die Zeichenfolgen "%userconfigdir%" und "%configdir1%" werden durch Leerstrings ersetzt, so dass meine .cmd-Datei wie folgt aussieht:

Code: Alles auswählen

set configdir1="C:\Program Files (x86)\MeinProgramm\config1"
set userconfigdir="D:\MeinProgramm"
if not exist  xcopy /e /h /r /y  \
"C:\Program Files (x86)\MeinProgramm\run.exe"
Wie kann ich die Prozentzeichen maskieren, so dass sie von opsi-winst nicht als opsi-Variablen interpretiert werden? - Und das so, dass aber die Variablen "$InstallDir$", "$StartScript$", "$UserConfigDir$" und "$ExecutableFile$" von opsi-winst durch ihren Inhalt ersetzt werden?

Danke für eure Hilfe!


Holger
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3327
Registriert: 04 Jun 2008, 14:27

Re: DosInAnIcon - Prozentzeichen escapen

Beitrag von d.oertel »

Hi,

try

Code: Alles auswählen

DefVar $InstallDir$
DefVar $StartScript$
DefVar $UserConfigDir$
DefVar $ExecutableFile$
Set $InstallDir$ = "%ProgramFiles32Dir%\MeinProgramm"
Set $StartScript$ = "StarteMeinProgramm.cmd"
Set $UserConfigDir$ = 'D:\MeinProgramm'
Set $ExecutableFile$ = $InstallDir$ + "\run.exe"


PatchTextFile_example $InstallDir$+"\"+$StartScript$

[PatchTextFile_example]
AddLine 'set configdir1="$InstallDir$\config1"'
AddLine 'set userconfigdir="$UserConfigDir$"'
AddLine 'if not exist %userconfigdir% xcopy /e /h /r /y %configdir1% %userconfigdir%\'
AddLine '"$ExecutableFile$"'
see:
http://download.uib.de/opsi4.0/doc/html ... chtextfile

Das Problem das Du hast liegt nicht im Winst sondern in der cmd.exe

in der Zeile:

Code: Alles auswählen

echo if not exist %userconfigdir% xcopy /e /h /r /y %configdir1% %userconfigdir%\ >> "$InstallDir$\$StartScript$"
ist %userconfigdir% eine nicht belegte Variable der cmd.exe.

gruß
d.oertel


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


holgerv
Beiträge: 288
Registriert: 20 Aug 2012, 09:35

Re: DosInAnIcon - Prozentzeichen escapen

Beitrag von holgerv »

d.oertel hat geschrieben:Das Problem das Du hast liegt nicht im Winst sondern in der cmd.exe
Stimmt, ich habe völlig übersehen, dass "echo" ja die (nicht definierte und daher leere) Variable interpretiert. Mit PatchTestFile + AddLine funktioniert es wie gewünscht.

Vielen Dank!


Holger
Antworten