日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bat/cmd将命令执行的结果赋值给变量

發布時間:2024/1/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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将命令执行的结果赋值给变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。