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-Key: 165026

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

Printed on: April 25, 2024 at 01:04 o'clock

Member: Snowman25
Snowman25 Apr 21, 2011 at 10:48:07 (UTC)
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
Member: WiSch
WiSch Apr 21, 2011 at 11:19:37 (UTC)
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