批处理脚本使其他batch file访问setlocalvariables

批处理脚本使其他batch file访问setlocalvariables,第1张

概述批处理脚本使其他batch file访问setlocalvariables

我正在写一个batch file从文件读取path,并将其设置为环境variables。 这个batch file将被许多其他batch file使用(调用)来获取variables。 在写batch file的时候,我遇到了一个问题,就是variables扩展,所以我用SETLOCAL ENABLEDELAYEDEXPANSION来解决这个问题。 但是这样做使用它的其他batch file不能获取variables设置。

以下是批处理脚本

getvariables.bat @echo off SETLOCAL ENABLEDELAYEDEXPANSION if EXIST "test.dat" ( for /F "tokens=*" %%I in (test.dat) do set %%I echo setting JAVA_HOME to :: !JAVA_HOME! echo setting JAVA to !JAVA! )

在我的另一个batch file中,我正在使用上面的batach文件来获取variables集

another.bat call getvariables.dat echo "%JAVA%"

但是回显是打印“”,它没有设置。 如果这是因为setlocal ,我怎么能克服呢? 我还需要setlocal来延迟扩展,并在执行时发生。 任何解决这个问题? 请帮我一下

Oracle环境variables“ORACLE_UNQname”

创build一个别名

无法更改java.io.tmpdir

简单的unix命令,什么是{}和; 对于

在后台使用&PHP不能正常工作

在远程机器上执行多个命令

在每个目录中查找最新的版本文件

来自C#代码的CMD命令不起作用(windows)

如何将一个subprocess.call的结果打印到python脚本中的一个文件中

如何在linux中删除名为“?”的文件?

要将多个全局变量设置为局部变量的值,请使用以下技巧:

endlocal & ( set "globalvar1=%localvar1%" set "globalvar2=%localvar2%" set "globalvar3=%localvar3%" )

()块中的变量在执行endlocal之前展开。

这个endlocal & set str=value会创造奇迹。

这真的取决于你在做什么 – 你是否已经发布了完整的脚本。

首先,你在%test.dat有%不平衡

接下来,将批处理文件命名为.bat而不是.dat是个好主意

接下来,如果这个getvariables.bat的唯一目的是设置变量文件的行(test.dat)

JAVA_HOME=c:whereverjavahomeis JAVA=c:whereverjavais

然后

@echo off if EXIST "test.dat" ( for /F "tokens=*" %%I in (test.dat) do set %%I )

是完全足够的。 就是这样 – 4行(如果你真的尝试,它可以被压缩到1)

重点是你只需要enabledelayedexpansion ,因此setlocal为了显示你正在改变的环境变量的值WITHIN THE LOOP WHERE YOU'RE CHANGING THE VALUES 。 你最终将删除这些线路,而enabledelayedexpansion失去了其存在的理由 。

为了测试,你可以写

@echo off echo before...JAVA=%java% echo before...JAVA_HOME=%java_home% if EXIST "test.dat" ( for /F "tokens=*" %%I in (test.dat) do set %%I ) echo after....JAVA=%java% echo after....JAVA_HOME=%java_home%

甚至

@echo off echo before&set java if EXIST "test.dat" ( for /F "tokens=*" %%I in (test.dat) do set %%I ) echo after&set java

事实上,如果getvariables.bat只能被CALL编辑,那么即使是@echo off也是多余的 – 假设你已经从调用批处理执行了@echo off 。

进入cmd并搜索setx。 它可以让你制作系统变量和所有其他类型的东西,甚至在文件中找到变量的x和y坐标。

总结

以上是内存溢出为你收集整理的批处理脚本使其他batch file访问setlocalvariables全部内容,希望文章能够帮你解决批处理脚本使其他batch file访问setlocalvariables所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1155158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存