Wie kann ich ein NULL-ASCII-Zeichen (nul) in einer Variablen mit einem Windows-Stapelscript speichern?

8

Nach dem Beitrag Wie kann ich ein Null-ASCII-Zeichen (nul) in eine Datei mit einem Windows-Stapel-Skript schreiben? gibt es in der Tat Methoden, um ein ASCII-NULL-Zeichen (nul) in eine Datei mit einem Batch-Skript zu schreiben.

Ich kann jedoch keine Möglichkeit finden, ein NULL-Zeichen in einer Variablen zu speichern.

Angenommen, die Datei null.nil enthält ein einzelnes NULL-Zeichen, das Umleiten in set /P scheint keine Arbeit zu sein, die Variable erscheint leer:

%Vor%

for /F scheint ebenfalls nicht zu funktionieren, da es anscheinend alle NULL-Zeichen, die es trifft, ablehnt. Basierend auf der gleichen Datei null.nil ergibt sich eine leere Variable:

%Vor%

Das Ändern der set -Syntax in set "NULL=%%S" oder in set NULL=^%%S ändert nichts, obwohl die Befehlszeile type "null.nil" das NULL-Zeichen (auf meinem Windows 10 x64-Rechner; redirect type -Ausgabe an a Datei und zeige sie mit einem Hex-Editor an.

Wie kann ich eine Variable auf ein einzelnes NULL-Zeichen setzen? Das NULL-Zeichen kann entweder aus einer Datei stammen (wie null.nil ) oder von einem intelligenten Hack generiert werden, aber ich möchte nicht, dass es direkt in die Batch-Datei eingebettet wird.

    
aschipfl 04.08.2016, 21:54
quelle

1 Antwort

2

Laut der Umgebungsvariablen von Microsoft's MSDN Library und auch auf den Post Setzen von Umgebungsvariablen für eine bestimmte Ausführung eines bestimmten Prozesses , der Umgebungsblock wird in a gespeichert NULL-terminierter Block von NULL-terminierten Strings - hier kurz dargestellt in EBNF -Notation:

%Vor%

Aufgrund dieses Speicherformats ist es nicht möglich, ein NULL-Zeichen in einer Umgebungsvariablen zu speichern. Selbst wenn es einem gelingt, einen NULL in den Umgebungsblock zu schreiben, kann er nie wieder gelesen werden.

    
aschipfl 09.08.2016, 22:28
quelle

Tags und Links