wisch
Goto Top

Prozentzeichen in Variable maskieren

Hallo.

Ich habe ein Passwort das ein %-Zeichen enthält.
Das übergebe ich innerhalb eines Call-Aufrufs als Parameter.
Gebe ich nun die auf diesem Parameter basierende Variable aus, ist sowohl das %-Zeichen als auch das Folgezeichen weg.
Ein Maskieren mit ^ oder ein doppeltes %% haben nicht geholfen.
Wie bekomme ich das gelöst?

Hier ein Codebeispiel:
CALL :subroutine "123%456"
GOTO :EOF

:subroutine
SET parameter=%~1
ECHO %parameter%
GOTO :EOF

Als Ausgabe bekomme ich dann ein 1235

Wie kann ich das %-Zeichen maskieren, damit es erhalten bleibt?


Danke für Eure Hilfe...

Content-ID: 165026

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

Ausgedruckt am: 05.11.2024 um 12:11 Uhr

Snowman25
Snowman25 21.04.2011 um 12:48:07 Uhr
Goto Top
Hallo @WiSch,

du musst das Prozentzeichen hier doppelt maskieren, eine doppelte maskierung benötigt 4 prozentzeichen, da jeweils 2 %-Zeichen zu einem geparst werden.
Der Ausdruck "123%456" innerhalb eines batchscripts wird hier 2 mal geparst. Einmal bei Aufruf der subroutine und dann nochmal beim Aufruf des SET-Befehls.
Deswegen muss es heißen:
CALL subroutine "123%%%%456"  

Gruß
Snow
WiSch
WiSch 21.04.2011 um 13:19:37 Uhr
Goto Top
Hallo Snowman25.

Vielen Dank, so funktioniert es...
Bis zu drei %-Zeichen war ich beim Try&Error schon gekommen... so nah dran und doch nicht geschafft. face-wink

Danke und frohe Ostern!

Gruß
WiSch