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:
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:
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.
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.
Tags und Links windows batch-file null ascii