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,因此不能简单地将其更改为正常状态。