在bat下如何实现像shell一样,把执行命令行后的结果赋值给变量呐?
刚开始,可真难为到我了。随着对bat批处理知识熟悉的加深。
学习到了!!!
举个 栗子:
svnlook uuid C:\Repository\test # 这行命令什么意思呐。它是svn服务器的命令(因为最近在搞svn的东西啦)。
# 所以这行命令实现的效果是 返回 test 仓库的 UUID
shell 下会这样实现:
UUID=`svnlook uuid C:\Repository\test` # 这里是 · 哦。这个符号就是键盘ESC按键下的那个 · (好小哦................)
==================================================
好的~~~看到了吧,shell下实现真的很简单,bat下也是可以实现的但是麻烦了点欸。
dos下: for /f “delims=” %t in (‘svnlook uuid C:\Repository\test‘) do set UUID=%t
bat文件中: for /f “delims=” %%t in (‘svnlook uuid C:\Repository\test‘) do set UUID=%%t
上面的区别就是 dos下执行 为 %t , bat文件中执行就是 %%t 。
还有就是要注意 ()里面使用的是单引号,因为在bat里单引号就是引用命令的意思。
这里的 delims 值得就是分隔符的意思。我这里写的是 “delims=” 。没有分隔符,所以会进行 行分割,
这样就可以取到第一行的结果了。
学会了这个,再写bat时。写出来的脚本更漂亮了,更简洁了。一口气能上10层楼了。哈哈。
原文地址:https://www.cnblogs.com/xautxuqiang/p/8963444.html