批处理文件中如何将一个命令的输出赋值给一个变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理文件中如何将一个命令的输出赋值给一个变量相关的知识,希望对你有一定的参考价值。

参考技术A 以date命令为例
for /f "tokens=*" %%i in ('date/t') do set s=%%i
echo %s%

for /f "tokens=1*" %%i in ('date/t') do (
set s=%%i
set t=%%j)
echo %s% %t% %s:~,4%

bat批处理下如何像shell一样将命令执行的效果赋值给变量

在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层楼了。哈哈。

   

 

以上是关于批处理文件中如何将一个命令的输出赋值给一个变量的主要内容,如果未能解决你的问题,请参考以下文章

在批处理中怎么样将findstr查找的值赋值给变量?

BAT批处理中输出变量换行

BAT/CMD中将命令执行结果赋值给变量

dos批处理下自动给环境变量赋值的问题

bat批处理下如何像shell一样将命令执行的效果赋值给变量

怎样在for循环变量中,将循环变量赋值给一个变量 批处理 bat