Как сохранить переменные окружения файла bat перед выполнением другой программы в файле bat? - PullRequest
0 голосов
/ 07 июня 2019

Способ запуска нескольких программ в файле bat.

Цель

Распространение программного обеспечения с GDAL в качестве зависимости.

Для этого я загрузил двоичные файлы gdal из Internals ГИС .Загруженные данные имеют файл .bat для установки переменных среды.Он использует команду set для установки переменных среды.

Согласно моим ограниченным знаниям в области сценариев Windows bash, я понимаю, что переменные среды, установленные с помощью set, ограничены самой текущей командной строкой и сбрасываются призапускается новая командная строка.

Также верно, что вызов командного файла из командного файла запускает новую командную строку, которая при закрытии не влияет на следующую команду, вызванную в родительском скрипте.

Здесь есть еще одна проблема - повлияют ли переменные среды на процесс, созданный (например, вызовом gdal_translate) программой на Java?Если это не так, то нет смысла устанавливать локальную переменную среды.


Окончательное требование:

Как использовать переменные среды, установленные в другом пакетном файле (вызываемом изпакетный файл) в следующей строке родительского пакетного файла, без использования setx?

1 Ответ

2 голосов
/ 07 июня 2019

Если вы используете команду CALL для запуска пакетного файла, как указано в принятом ответе на вопрос, с которым вы связаны, то переменные среды передаются в родительский пакетный файл.

Естьтри раза, где это не true:

  • При использовании SETX ни родительский, ни дочерний пакетный файл не получат переменные среды.
  • При использовании SETLOCAL и ENDLOCAL внутри дочернего пакетного файла родительский пакетный файл не получит переменные среды.
  • При запуске дочернего файлакомандный файл с использованием start или cmd.exe /c.

Пока вы запускаете свое Java-приложение в той же среде (то есть в том же пакетном файле), оно будет выбирать те же переменные среды.Вы можете проверить это с помощью приложения, такого как Process Explorer .

Запуск set _kjhgkjshdgkjhdfg=TEST перед запуском файла .jar, приведенный на скриншоте ниже с использованием любого из:

  • javaw -jar jarfile.jar
  • cmd /c javaw -jar jarfile.jar
  • start cmd /c javaw -jar jarfile.jar

Process Explorer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...