Мне нужно использовать командную строку cmd.exe(cmd.exe вызывается из инструмента построения gyp), чтобы определить, определена ли переменная среды или нет. Как я могу это сделать? Я в порядке, полагая, что значение переменной не содержит одиночных или двойных кавычек, но не может предполагать, что расширения команд включены.
Я пробовал следующее, которое отлично работает в .bat файле, но сбой при вводе непосредственно в командной строке:
IF "%UNDEFINED%" == "" (echo yes)
Когда эта точная строка находится в файле .bat и выполняется, я вижу в качестве вывода yes
. Когда я ввожу его в командной строке, вывод пуст. Я тестирую это на Windows XP SP3, хотя мой коллега видит те же результаты в Windows 7. Это метод, предложенный http://support.microsoft.com/kb/121170 и http://www.robvanderwoude.com/battech_defined.php. Я не хочу использовать IF DEFINED UNDEFINED (echo yes)
, потому что это не будет работать, если расширения команд отключены.
Самый верный ответ в следующем сообщении привел меня к мысли, что эта проблема связана с тем, как процентное расширение обрабатывается по-разному в "CmdLineParser" по сравнению с "BatchLineParser", но до сих пор не привело меня к решение: Как интерпретатор сценариев Windows Command Interpreter (CMD.EXE)?