Potrzebuję użyć wiersza polecenia cmd.exe (program cmd.exe jest wywoływany z narzędzia budowania gyp), aby określić, czy zdefiniowano zmienną środowiskową. Jak mogę to zrobić? Jestem w porządku, zakładając, że wartość zmiennej nie zawiera pojedynczych ani podwójnych cudzysłowów, ale nie można założyć, że rozszerzenia poleceń są włączone.Sprawdź, czy zmienna środowiskowa jest zdefiniowana bez rozszerzeń poleceń i bez użycia pliku wsadowego?
Próbowałem następujące, które działa świetnie w pliku .bat, ale nie bezpośrednio po wpisaniu w wierszu polecenia:
IF "%UNDEFINED%" == "" (echo yes)
Kiedy tak dokładna linia jest w pliku .bat i wykonane, Widzę yes
jako wynik. Kiedy wpisuję go w linii poleceń, dane wyjściowe są puste. Testuję to w systemie Windows XP SP3, chociaż mój współpracownik widzi te same wyniki w systemie Windows 7. Jest to metoda sugerowana przez http://support.microsoft.com/kb/121170 i http://www.robvanderwoude.com/battech_defined.php. Nie chcę używać IF DEFINED UNDEFINED (echo yes)
, ponieważ nie zadziała, jeśli rozszerzenia poleceń są wyłączone.
Najwyżej głosowana odpowiedź w następującym poście doprowadziła mnie do przekonania, że ta kwestia wiąże się z tym, że obsługa procentowa jest obsługiwana inaczej w "CmdLineParser" niż "BatchLineParser", ale wciąż nie doprowadziła mnie do rozwiązanie: How does the Windows Command Interpreter (CMD.EXE) parse scripts?
W linii poleceń można po prostu użyć polecenia 'SET', aby sprawdzić, czy zmienna jest zdefiniowana. – RBarryYoung
Jak tego użyć w kontroli warunkowej? Próbowałem: 'IF (SET UNDEFINED) (echo yes)' i otrzymałem 'UNDEFINED 'było nieoczekiwane w tym momencie.' – Johann
Po co używać IF w linii poleceń? Po prostu spójrz na to i podejmij stosowną akcję. – RBarryYoung