joe2017
Goto Top

Setlocal enabledelayedexpansion und Sonderzeichen (z.B. !-Zeichen)

Hallo Zusammen,

ich bin mir sicher, dass dieses Thema schon öfters angesprochen wurde. Leider finde ich hierzu aber nichts.
Wenn in einer Batch die Zeile setlocal enabledelayedexpansion zum Einsatz kommt, werden keine Sonderzeichen wie z.B. "!" mehr angenommen.

Ich lese aus einer TXT Datei Benutzer und Kennwörter ein. Leider werden diverse Sonderzeichen in den Kennwörtern abgeschnitten.
Gibt es hierfür eine Lösung? CHCP 1252 funktioniert an dieser Stelle auch nicht mehr.

Content-Key: 287977

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

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

Member: Endoro
Endoro Nov 10, 2015 updated at 14:35:47 (UTC)
Goto Top
Hey,
wenn delayed expansion, die verzögerte Erweiterung von Variablen eingeschaltet wurde, werden die Ausrufezeichen zur Kennzeichnung von Variablen verwendet. Das macht das Einlesen dieser Zeichen in eine Variable kompliziert.

Eine Methode wäre, das Ausrufezeichen vor dem Einlesen zu schützen:
@echo off 
setlocal enabledelayedexpansion
set "var=^!"  
echo !var!

Eine andere Methode ist, die verzögerte Erweiterung erst nach dem Einlesen der Ausrufezeichen einzuschalten:
@echo off &setlocal disabledelayedexpansion
set "var=!"  
setlocal enabledelayedexpansion
echo !var!

Und drittens ist es oft möglich, auf die verzögerte Erweiterung oder die Verwendung von Ausrufezeichen zu verzichten. Was auf den Einzelfall ankommt. In diesem Beitrag kannst du was zur Variablenerweiterung nachlesen.

Gruß, Endoro
Member: joe2017
joe2017 Nov 12, 2015 at 10:23:05 (UTC)
Goto Top
Hallo Endoro,

danke für die Info, aber ich musste es jetzt leider anders lösen. Ich habe ein andere Methode für meine Script gewählt und somit den Befehl setlocal enabledelayedexpansion nicht mehr eingesetzt.

Da ich meine Informationen aus einer TXT einlese, weiß ich auch nicht an welcher Stelle welches Zeichen kommt.

Dennoch vielen Dank für die Hilfe.