3 回答
TA贡献1772条经验 获得超5个赞
要执行Jesse描述的操作,需要从Windows批处理文件中编写:
for /f "delims=" %%a in ('ver') do @set foobar=%%a
但是,如果您习惯使用Unix类型的脚本,我建议在Windows系统上使用Cygwin。
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批处理时未能清除变量的值可能是导致细微错误的原因。
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”中第一行的值(仅)。
- 3 回答
- 0 关注
- 1161 浏览
添加回答
举报