为了账号安全,请及时绑定邮箱和手机立即绑定

使用Windows批处理文件中的命令结果设置变量的值

使用Windows批处理文件中的命令结果设置变量的值

开满天机 2019-10-11 10:37:52
在Bash环境中工作时,通常要执行以下命令来设置变量的值:var=$(command -args)var该命令设置的变量在哪里command -args。然后,我可以通过访问该变量$var。与几乎所有的Unix shell兼容的更常规的实现方法是:set var=`command -args`就是说,如何在Windows批处理文件中通过命令的结果设置变量的值?我试过了:set var=command -args但是我发现它var被设置为command -args而不是命令的输出。
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

要执行Jesse描述的操作,需要从Windows批处理文件中编写:


for /f "delims=" %%a in ('ver') do @set foobar=%%a 

但是,如果您习惯使用Unix类型的脚本,我建议在Windows系统上使用Cygwin。


查看完整回答
反对 回复 2019-10-11
?
慕后森

TA贡献1802条经验 获得超5个赞

由于Windows批处理命令,因此需要特别小心:


for /f "delims=" %%a in ('command') do @set theValue=%%a

与Unix shell语句的语义不同:


theValue=`command`

考虑命令失败导致错误的情况。


在Unix Shell版本中,仍然会继续分配“ theValue”,所有先前的值都将替换为空值。


在Windows批处理版本中,处理错误的是“ for”命令,并且永远不会到达“ do”子句-因此,将保留“ theValue”的任何先前值。


为了在Windows批处理脚本中获得更多类似Unix的语义,必须确保进行分配:


set theValue=

for /f "delims=" %%a in ('command') do @set theValue=%%a

将Unix脚本转换为Windows批处理时未能清除变量的值可能是导致细微错误的原因。


查看完整回答
反对 回复 2019-10-11
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

当我在批处理文件中需要数据库查询结果时,这是我的处理方法:


sqlplus -S schema/schema@db @query.sql> __query.tmp

set /p result=<__query.tmp

del __query.tmp

密钥在第2行中:“ set / p”通过“ <”重定向运算符将“ result”的值设置为“ __query.tmp”中第一行的值(仅)。


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 1161 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信