Batch file 批量执行命令和打印变量
我有一个设置环境变量的批处理脚本——它的目的是让您运行这个东西,然后从那里运行额外的命令。Batch file 批量执行命令和打印变量,batch-file,cmd,Batch File,Cmd,我有一个设置环境变量的批处理脚本——它的目的是让您运行这个东西,然后从那里运行额外的命令。 相反,我只需要打印环境变量的值,而无需更改调用者的environment。 我试过,例如mybat.bat&&echo%VAR%,但似乎 a) 该值会影响调用者和 b) 它只有在重复运行时才起作用——可能与执行批处理脚本之前读取VAR的环境有关 有什么建议吗?您需要启用延迟扩展执行cmd/?,您将看到: /V:ON使用启用延迟环境变量扩展!作为 定界符。例如,/V:ON将允许!瓦尔!扩大 执行时的变量va
相反,我只需要打印环境变量的值,而无需更改调用者的environment。
我试过,例如
mybat.bat&&echo%VAR%
,但似乎a) 该值会影响调用者和
b) 它只有在重复运行时才起作用——可能与执行批处理脚本之前读取VAR的环境有关
有什么建议吗?您需要
启用延迟扩展
执行cmd/?
,您将看到:
/V:ON使用启用延迟环境变量扩展!作为
定界符。例如,/V:ON将允许!瓦尔!扩大
执行时的变量var。var语法扩展变量
在输入时,这是一件完全不同的事情,当在FOR的内部时
循环
在批处理中,我们通常会使用它来扩展执行时间。您希望从cmdline运行它,因此需要使用/V:ON
开关启用它,并将%
替换为代码>
cmd /V:ON mybat.cmd && echo !VAR!
另外,.bat
和.cmd
文件扩展名在重置errorlevel
时也有细微的区别,但我建议至少出于这个原因,您使用.cmd
扩展名。变量通常设置为运行的cmd.exe
会话的本地变量,因此,为了不“感染调用者”,您需要在不同的cmd.exe
会话中运行脚本
这使用Set
来显示变量和值
Cmd/C“MyBat&设置变量”
如果只想查看值,可以使用Echo
:
- …使用延迟扩展:
Cmd/V:On/C“MyBat&Echo(!VAR!”
- …使用
调用强制展开:
Cmd/C“MyBat&呼叫回音(%VAR%)
注意:要从批处理文件运行此操作,需要将%
字符加倍,即%%VAR%%
在mybat.bat
中将它们写入一个文件,例如(Echo%%Var1%%=%Var1%&Echo%%Var2%%=%Var2%)>file.txt
中,然后在新脚本中读取它们,例如键入file.txt
。如果您想从命令行运行它们,您必须这样做。cmd/V:on/C“mybat&&Echo!VAR!”
不幸的是,我无法控制mybat,因此不能简单地将其更改为正常状态。