bat/cmd将命令执行的结果赋值给变量
比如我想把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将命令执行的结果赋值给变量的更多相关文章
- bat批处理下如何像shell一样将命令执行的效果赋值给变量
在bat下如何实现像shell一样,把执行命令行后的结果赋值给变量呐? 刚开始,可真难为到我了.随着对bat批处理知识熟悉的加深. 学习到了!!! 举个 栗子: svnlook uuid C:\R ...
- [转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题
转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...
- 转:Windows中的命令行提示符里的Start命令执行路径包含空格时的问题
转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...
- 使用批处理文件(.bat)启动多个CMD窗口并执行命令
由于每次启动本机的kafka都需要打开2个cmd窗口,分别启动zookeeper服务和kafka服务,操作相对繁琐,于是想起了批处理来帮忙一键启动. 在桌面新建一个txt文件,改后缀名为.bat,并加 ...
- Windows常用批处理命令 CMD BAT (CMD目录操作等dir)
Windows常用批处理 CMD BAT CMD获取文件夹下所有文件的名称并打印(输出)到指定目录 dir C:\Users\\Desktop\png\*.*/s >c:\.txt //cmd ...
- BAT脚本如何自动执行 adb shell 以后的命令
@echo off echo su > temp.txt echo 其它命令 >> temp.txt adb shell < temp.txt del temp.txt 求问 ...
- [转] 打开 CMD 时自动执行命令
[转] 打开 CMD 时自动执行命令 问题描述 在Windows中打开一个command-prompt时,我正在寻找一种方法来执行一些控制台命令,特别是设置一些命令别名. 例如,当打开command- ...
- 【linux】linux 下 shell命令 执行结果赋值给变量【两种方式】
方法1:[通用方法] 使用Tab键上面的反引号 例子如下: find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件 使用反引号 引住命令 ...
- BAT批量处理 命令
第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以 ...
随机推荐
- js 基础知识总结
1.switch结构 switch语句部分和case语句部分,都可以使用表达式. switch(1 + 3) { case 2 + 2: f(); break; default: neverhappe ...
- redis(一)--认识redis
Redis官网对redis的定义是:“Redis is an open source, BSD licensed, advanced key-value cache and store”,可以看出,R ...
- BP
下面内容抄袭这里的:galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html Principles of training multi-layer neu ...
- 洛谷P1032 字串变换【bfs】
题目链接:https://www.luogu.org/problemnew/show/P1032 题意: 给定一个原字符串和目标字符串,以及几个字符串变换的规则. 问能否根据这几个规则在十步之内把原字 ...
- TOP100summit:【分享实录】京东1小时送达的诞生之路
本篇文章内容来自2016年TOP100summit 京东WMS产品负责人李亚曼的案例分享. 编辑:Cynthia 李亚曼:京东 WMS产品负责人.从事电商物流行业近10年,有丰富的物流行业经验,独立打 ...
- Ubuntu下搭建JAVA开发环境及卸载
据调查,在中国,PC时代,绝大多数普通用户都不知道linux为何物,到了移动互联网时代,更加不知道,也不会再知道了. 所以,此文不多解释,使用linux的,都是IT界人士,不必普及基础知识. 从已经安 ...
- Elasticsearch 2.3.3 JAVA api说明文档
原文地址:https://www.blog-china.cn/template\documentHtml\1484101683485.html 翻译作者:@青山常在人不老 加入翻译:cdcnsuper ...
- 【每日一题】Flooded! UVA - 815 模拟阅读格式题
https://cn.vjudge.net/problem/UVA-815 题意:给你一个矩阵,每个格子的数代表一个海拔并且每个格子的面积100平方米.给你整个区域的降水量(立方米),问降水量(米). ...
- HTML5:基本语句
HTML5:超文本标记语言(HTML)第五次重大修改 我用的sulime编辑器,用Package contorl后安装emmet插件来编辑HTML代码,以下为sublime操作小技巧 ctrl+s 保 ...
- [daily][archlinux][pacman] 删除所有孤立包(orphan)
[:] <tong> sudo pacman -Rsun `pacman -Qdt |cut -d` [:] <tong> 我每次都这么删, 有没有高级点的 ...