A way to run multiple programs in a bat file.
分发具有GDAL依赖关系的软件。
为此,我从GIS Internals下载了gdal二进制文件。下载的数据具有一个.bat
文件来设置环境变量。它使用set
命令来设置环境变量。
据我对Windows bash脚本的了解有限,我了解set
设置的环境变量仅限于当前命令提示符本身,并在启动新命令提示符时重置。
此外,从批处理文件调用批处理文件是否会启动新的命令提示符,该命令提示符在关闭时不会影响父脚本中调用的下一个命令。
这里还有另一个问题-环境变量会影响Java程序创建的进程(例如调用gdal_translate)吗?如果没有,那么设置本地环境变量毫无意义。
如何在不使用setx
的情况下使用父批处理文件下一行中另一个批处理文件(从批处理文件中调用)中设置的环境变量?
答案 0 :(得分:2)
如果您使用CALL
命令运行所链接问题的已接受答案中指定的批处理文件,则环境变量将传递到父批处理文件。
在三遍情况下,不为真:
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