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.这些命令统称批处理命令.小知识:可以 ...
随机推荐
- 自定义元素 v1:可重用网络组件
google文档 https://developers.google.cn/web/fundamentals/web-components/customelements 兼容性 https://can ...
- CH 1601 - 前缀统计 - [字典树模板题]
题目链接:传送门 描述给定 $N$ 个字符串 $S_1,S_2,\cdots,S_N$,接下来进行 $M$ 次询问,每次询问给定一个字符串 $T$,求 $S_1 \sim S_N$ 中有多少个字符串是 ...
- webkit下面的CSS设置滚动条
webkit下面的CSS设置滚动条 1.主要有下面7个属性: ::-webkit-scrollbar 滚动条整体部分,可以设置宽度啥的 ::-webkit-scrollbar-button 滚动条两端 ...
- babel-preset-env使用介绍
声明:文章转自https://www.cnblogs.com/ye-hcj/p/7070084.html 本文介绍一个babel转码神器babel-preset-env 简介 现如今不同的浏览器和平台 ...
- 使用graalvm.js调用promise
前提 1.JDK1.8 2.引入jar包 <!--graalvm.js --> <dependency> <groupId>org.graalvm.js</g ...
- debian安装nodejs
https://nodejs.org/en/download/ 二进制安装 sudo wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux ...
- arcengine实现右键菜单打开/关闭所有图层
参考资料: http://developer.51cto.com/art/201104/256774.htm 参照后自己做的: 关于右键菜单的几个有价值的网址: http://blog.csdn.n ...
- utf-8 utf8
mysql> DROP TABLE IF EXISTS student; Query OK, 0 rows affected (0.00 sec) mysql> create table ...
- 在U盘上安装GRUB2直接引导ISO
本文的内容来源于 http://maxmars.net/blog/2012/10/02/boot-multiple-iso-from-usb-using-linux/ 以下所有命令都在 root 用户 ...
- mysql学习【第4篇】:MySQL函数和编程
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第4篇]:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , ...