比如我想把git代码的commitid获取以后加到文件夹上来标记文件夹中的包是哪个git 节点构建得到的。

git 命令是git rev-parse --short HEAD

再linux系统下,只需要执行下面的命令:

  commitid=`git rev-parse --short HEAD`

  echo commitid=$commitid

但是在windows系统下,却不能直接使用反引号,要使用for变通下,命令如下:  

for /F %%i in ('git rev-parse --short HEAD') do ( set commitid=%%i)
echo commitid=%commitid%

执行结果如下:

我的任务参数设置如下图:

最后我的文件夹的名字就可以达到下面的效果了:

此外,还有如果我们要findstr 某个字符串来确定是否包含的时候,我遇到了这个报错:“此时不应有 |。”

是因为|是特殊字符,需要转义,不然会报错,比如我们要过滤tag中是否有tag_r10001,正确的:

setlocal ENABLEDELAYEDEXPANSION

set b_tag=tag_r10001

for /F %%j in ( 'git tag ^| findstr %b_tag%' ) do ( set tag_flag=%%j )   
echo tag_flag=!tag_flag!
::如果这个tag存在,则切换到tag,如果不存在,提示tag错误,并显示已有tag,然后异常退出
if not "!tag_flag!" == "" (
  echo "checkouting %b_tag% ....."
  git checkout %b_tag%
)else (
  echo "your input tag is not exist and exit ,all tag as follow:"
  git tag
  exit 1
)

上面这段表示,首先finstr过滤tag_r10001的结果给tag_flag,如果tag_flag为空,表示tag不存在,出错退出,如果存在,切换到对应tag。

 其中,我在调试阶段:set tag_flag以后,使用echo tag_flag=%tag_flag%,怎么都不能输出正确的结果,值都是空的,哪怕tag是存在的,

这里要说一下“延迟环境变量扩展”,通过setlocal ENABLEDELAYEDEXPANSION 设置参考:https://blog.csdn.net/kolamemo/article/details/18036021

注意:for /F %%j in ( 'git tag ^| findstr %b_tag%' ) 这里,括号中使用的是单引号,不是反引号

bat/cmd将命令执行的结果赋值给变量的更多相关文章

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

    在bat下如何实现像shell一样,把执行命令行后的结果赋值给变量呐? 刚开始,可真难为到我了.随着对bat批处理知识熟悉的加深. 学习到了!!! 举个 栗子: svnlook  uuid  C:\R ...

  2. [转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

    转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...

  3. 转:Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

    转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...

  4. 使用批处理文件(.bat)启动多个CMD窗口并执行命令

    由于每次启动本机的kafka都需要打开2个cmd窗口,分别启动zookeeper服务和kafka服务,操作相对繁琐,于是想起了批处理来帮忙一键启动. 在桌面新建一个txt文件,改后缀名为.bat,并加 ...

  5. Windows常用批处理命令 CMD BAT (CMD目录操作等dir)

    Windows常用批处理 CMD BAT CMD获取文件夹下所有文件的名称并打印(输出)到指定目录 dir C:\Users\\Desktop\png\*.*/s >c:\.txt //cmd ...

  6. BAT脚本如何自动执行 adb shell 以后的命令

    @echo off echo su > temp.txt echo 其它命令 >> temp.txt adb shell < temp.txt del temp.txt 求问 ...

  7. [转] 打开 CMD 时自动执行命令

    [转] 打开 CMD 时自动执行命令 问题描述 在Windows中打开一个command-prompt时,我正在寻找一种方法来执行一些控制台命令,特别是设置一些命令别名. 例如,当打开command- ...

  8. 【linux】linux 下 shell命令 执行结果赋值给变量【两种方式】

    方法1:[通用方法] 使用Tab键上面的反引号 例子如下: find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件 使用反引号 引住命令 ...

  9. BAT批量处理 命令

    第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以 ...

随机推荐

  1. E - Cup

    The WHU ACM Team has a big cup, with which every member drinks water. Now, we know the volume of the ...

  2. 创建数据库,创建数据库表,例子。MySQL语句

    1.创建数据库:    创建的代码:create  数据库的代码:database   数据库表名:随便起,只要自己记住就行.test create database test; 2.删除数据库: 删 ...

  3. ARM Linux Oops使用小结(转)

    出现Oops消息的大部分错误时因为对NULL指针取值或者因为用了其他不正确的指针值. Oops如何产生的解释如下:     由于处理器使用的地址几乎都是虚拟地址,这些地址通过一个被称为“页表”的结构被 ...

  4. DevOps平台的“精益创业”之路

    本文内容节选自第六届全球软件案例研究峰会,时任中国移动通信集团浙江有限公司罗琼老师,申健老师分享的<DevOps平台的“精益创业”之路>实录,重点分享:DevOps产品研发过程,对外实施敏 ...

  5. vue项目打包后一片空白及资源引入的路径报错解决办法

    网上很多说自己的VUE项目通过Webpack打包生成的list文件,放到HBulider打包后,通过手机打开一片空白.这个主要原因是路径的问题. 1.记得改一下config下面的index.js中bu ...

  6. cmd打开E盘文件

    在命令行中输入你想要打开文件所在的磁盘,这里我以打开E:\homework\1.jpg来给大家做示范.在命令行中输入  E:   输入后按下enter键.就进入E盘中,效果如图所示!   如果你想要查 ...

  7. centos 安装教程 服务器配置教程 服务器中安装python 服务器中安装Django 安装MySQL 配置MySQL

    一 .解决python编译安装所需的软件依赖 yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel opens ...

  8. hadoop 0.20.2伪分布式安装详解

    adoop 0.20.2伪分布式安装详解 hadoop有三种运行模式: 伪分布式不需要安装虚拟机,在同一台机器上同时启动5个进程,模拟分布式. 完全分布式至少有3个节点,其中一个做master,运行名 ...

  9. [No0000103]JavaScript-基础课程3

    在 JavaScript 中,函数的参数是比较有意思的,比如,你可以将任意多的参数传递给一个函数,即使这个函数声明时并未制定形式参数 function adPrint(str, len, option ...

  10. 用pymysql操作MySQL数据库

    工具库安装 pip install pymysql 连接关闭数据库与增删改查操作 # 导入pymysql库 import pymysql # 打开数据库连接 # 参数1:数据库服务器所在的主机+端口号 ...