2016-08-09 59 views
0

Ich benötige eine Systemvariable und weise ihr einen leeren String zu. Ich habe versucht,Leere Systemvariable mit setx zuweisen

setx samplepassword "" 

Aber auf echo %samplepassword%, was eine leere Zeichenfolge ist %samplepassword% stattdessen sein sollte. Nun fand ich dies in der Dokumentation

Einstellwert von „“ (leeren Anführungszeichen) erscheinen die Variable zu löschen - es ist nicht durch SET gezeigt, aber der Variablenname wird in der Registrierung bleiben.

http://ss64.com/nt/setx.html

Wie kann ich eine leere Systemvariable mit setx zuweisen?

Update: Ich habe die Umgebungsvariablen über den Windows-GUI geprüft: Control Panel | System | Advanced | Environment Variables und sah, dass die DB_PASSWORD in der Tat mit einem leeren String Wert initialisiert wurde. Aber warum gibt echo %samplepassword% mir die obige Ausgabe? Ich habe eine neue Instanz von cmd geöffnet, um genau zu sein.

+0

Scheint richtig für mich. Ich bezweifle, dass Ihre Datenbank-Passwort-Variable wirklich leer ist. Wahrscheinlich verwendet es ein Zeichen, das nicht angezeigt werden kann. – Squashman

+0

Ich probierte tatsächlich 'setx samplepassword \" 'dann' echo% samplepassword% 'zeigte mir' \ '. Ich habe dann 'setx samplepassword '" 'getestet, um zu sehen, ob das gleiche Systemverhalten auftritt, und das tat es. – Eduard

+1

Ich denke, Sie haben hier ein Missverständnis. Es gibt keine Möglichkeit, einer Umgebungsvariable (Batch) eine "leere Zeichenfolge" zuzuweisen.Der Befehl 'set 'samplepassword =" '_deletet_ die Variable, also' echo "% samplepassword%" 'zeige einfach" "an. Sie brauchen dazu weder 'setx', noch' setx' kann dieses Verhalten ändern. – Aacini

Antwort

1

Ich denke, dass Sie hier ein Missverständnis haben. Es gibt keine Möglichkeit, eine "leere Zeichenfolge" einer Umgebungsvariablen (Batch) zuzuweisen. Der Befehlssatz "samplepassword =" löscht die Variable, so dass das Echo "% samplepassword%" nur "" anzeigt. Sie brauchen dafür weder den Befehl setx noch setx können dieses Verhalten ändern. - Aacini 9. August bei 4:39

TL; DR: Technisch ist es nicht möglich, eine leere Variable in der Umgebung zu schaffen. - Aacini

3

Technisch können Sie eine leere Umgebungsvariable erstellen, aber nicht mit setx.

Run, der als Administrator

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" /v TESTENV /d "" 

der Registrierungsschlüssel hinzugefügt:

enter image description here

es zeigt auch in Umgebungsvariablen Systemplatte

enter image description here

Aber nicht in das Liste beim Aufruf set

Also auch wenn es möglich ist, ist es eher nutzlos. Es könnte jedoch einige Programme täuschen, wenn das env. Die Variable existiert, indem überprüft wird, ob der Registrierungsschlüssel existiert. Es könnte also sogar kontraproduktiv und verwirrend sein.

+0

Nun, technisch ist es nicht möglich, eine leere Variable ** in der Umgebung ** zu erstellen. Ihr Beispiel zeigt, dass es möglich ist, eine leere Variable ** in der Registry zu erstellen **, das ist eine ganz andere Sache! Ihre Schlussfolgerung ist nützlich: Ein Programm sollte niemals nach einer _environment-Variable suchen _, die die Registry überprüft _. – Aacini

+0

danke! Ich wusste, dass es einen Sinn gab. Ich erinnere mich, dass ich deswegen einmal erwischt wurde, als ein Skript drunter und drüber ging und unfreiwillig leere Variablen mit dieser Methode erzeugte. –