在 Bash 环境中工作时,要将变量的值设置为命令的结果,我通常会这样做:
var=$(command -args)
其中 var
是由命令 command -args
设置的变量 . 然后我可以将该变量作为 $var
访问 .
执行此操作的更常规方法几乎与每个Unix shell兼容:
set var=`command -args`
也就是说,如何在 Windows batch file 中使用命令的结果设置变量的值?我试过了:
set var=command -args
但我发现 var
设置为 command -args
而不是命令的输出 .
4 回答
要从Windows批处理文件中执行Jesse describes,您需要编写:
但是,如果您习惯使用Unix类型的脚本,我建议您在Windows系统上使用Cygwin .
需要注意一点,因为Windows批处理命令:
与Unix shell语句没有相同的语义:
考虑命令失败的情况,导致错误 .
在Unix shell版本中,仍然会发生对“theValue”的赋值,任何以前的值都将替换为空值 .
在Windows批处理版本中,它是处理错误的“for”命令,并且永远不会达到“do”子句 - 因此将保留“theValue”的任何先前值 .
要在Windows批处理脚本中获得更多类似Unix的语义,必须确保进行分配:
将Unix脚本转换为Windows批处理时未能清除变量的值可能是导致细微错误的原因 .
当我在批处理文件中需要数据库查询结果时,我就是这样做的:
键位于第2行:“set / p”通过“<”重定向运算符将“result”的值设置为“__query.tmp”中第一行(仅)的值 .
我见过它的唯一方法就是你这样做:
ver
是Windows的版本命令,在我的系统上它产生:Source