Мне нужно получить доступ к переменной среды Windows в сценарии .cmd, он выглядит примерно так, следуя документации по поддержке Microsoft:

if "%MY_ENV_VAR%" == "" (
  echo You must set your MY_ENV_VAR environment variable.
  goto end
)

set DO_STUFF="%MY_ENV_VAR%\some_folder\doStuff.exe"

Тем не менее, скрипт не будет работать, и я получаю следующее сообщение:

\Windows ожидалось в это время

Я сделал что-то неправильно? Как это исправить?

Я не знаю, насколько это важно, но переменная среды содержит следующий путь: C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0

2 ответа2

1

Я думаю, что вы можете смешивать пакетный язык с более продвинутым языком сценариев. Ссылка, которую вы показываете, предназначена для пакетных файлов. Насколько мне известно, вы не можете писать командные файлы, как вы можете Java-код (с помощью фигурных скобок и т.д.)

Вот некоторый псевдокод, который может дать вам представление о том, как применить пример, на который вы ссылаетесь:

if "%MY_ENV_VAR%"=="" goto ERROR
set DO_STUFF=%MY_ENV_VAR%\some_folder\doStuff.exe
...
goto DONE
:ERROR
echo You must set your MY_ENV_VAR environment variable.
:DONE

Прошло много времени с тех пор, как я написал командный файл, но я думаю, что это в основном так.

0

хм .. это, кажется, работает хорошо для меня.

Но если проблема связана с первым IF, вы можете попробовать следующее:

if not defined MY_ENV_VAR (
    echo You must set your MY_ENV_VAR environment variable.
    goto end
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .