Seite 1 von 1

DosInAnIcon - Prozentzeichen escapen

Verfasst: 08 Sep 2014, 15:32
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

Re: DosInAnIcon - Prozentzeichen escapen

Verfasst: 14 Sep 2014, 14:13
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

Re: DosInAnIcon - Prozentzeichen escapen

Verfasst: 15 Sep 2014, 14:36
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