Überprüfen Sie, ob eine Umgebungsvariable ohne Befehlserweiterungen und ohne Verwendung einer Batchdatei definiert ist.

Ich muss eine cmd.exe-Befehlszeile verwenden (cmd.exe wird vom Gyp-Build-Tool aufgerufen), um festzustellen, ob eine Umgebungsvariable definiert ist oder nicht. Wie kann ich das machen? Ich gehe davon aus, dass der Variablenwert keine einfachen oder doppelten Anführungszeichen enthält, kann aber nicht davon ausgehen, dass Befehlserweiterungen aktiviert sind.

Ich habe Folgendes ausprobiert, was in einer .bat-Datei hervorragend funktioniert, aber bei direkter Eingabe in der Befehlszeile fehlschlägt:

IF "%UNDEFINED%" == "" (echo yes)

Wenn genau diese Zeile in einer .bat-Datei ist und ausgeführt wird, sehe ichyes als Ausgabe. Wenn ich es in die Befehlszeile eingebe, ist die Ausgabe leer. Ich teste dies unter Windows XP SP3, obwohl mein Kollege die gleichen Ergebnisse unter Windows 7 sieht. Dies ist die von vorgeschlagene Methodehttp://support.microsoft.com/kb/121170 undhttp://www.robvanderwoude.com/battech_defined.php. Ich möchte nicht verwendenIF DEFINED UNDEFINED (echo yes) weil das nicht funktioniert, wenn die Befehlserweiterungen deaktiviert sind.

Die am häufigsten gewählte Antwort im folgenden Beitrag hat mich zu der Annahme veranlasst, dass dieses Problem damit zusammenhängt, wie die prozentuale Erweiterung im "CmdLineParser" im Vergleich zum "BatchLineParser" unterschiedlich gehandhabt wird, hat mich jedoch noch nicht zu einer Lösung geführt:Wie parst der Windows Command Interpreter (CMD.EXE) Skripte?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage