簡體   English   中英

批處理文件循環通過遠程 Git 分支並將每個分支中的類似 CSV 文件復制到本地目錄

[英]Batch File to Loop Through Remote Git Branches and Copy a Similar CSV File in Each Branch to a Local Directory

我對批處理腳本很陌生。

為了詳細說明我的問題,在許多不同的遠程 git 分支中找到了一個特定文件,每個 csv 文件在分支中的內容不同,但在命名約定上相似。 我正在嘗試編寫一個批處理文件,該文件循環遍歷每個遠程 git 分支並將該文件復制到本地目錄。

值得慶幸的是,每個遠程分支都遵循相同的命名約定:3 位數的 ID、下划線和單詞 update(例如018_update )。 源目錄具有以下命名格式:3 位 ID、空格和帶空格的基於文本的名稱(例如: \018 To Shreds - You Say )。

我已經能夠將分支名稱放入列表中,然后遍歷每個分支,但現在我被卡住了。 我想知道如何導航的一個問題是我是否能夠在%%a上使用通配符從遠程分支名稱中提取 3 位 ID 並使用它來定位目錄(和文件名)也都包含在那里的 3 位數字。

這是我到目前為止所寫的:

FOR /F "tokens=*" %%a  IN (
 'git branch -r --list "*???_update*" '
 ) DO (
    git checkout %%a
)
)

假設這是 go 的正確方向,我覺得剩下的就是找到一種方法從遠程分支名稱(即%%a )中獲取 3 位 ID 並使用它來制作通配符並找到我想從那里復制/粘貼的文件。

預先感謝任何能夠幫助我解決這個問題的人!

這演示了如何將<origin>/<###_name*>形式的字符串解析為兩個變量%%a%%b ,然后將_id設置為分支名稱的三位前綴。 如果您的分支名稱看起來更像<origin>/*###_name* ,那么我們還有更多工作要做,稍后我可以為您提供幫助。

@setlocal EnableExtensions

@for /F "tokens=1,* delims=/" %%a  in ('git branch -r --list *???_upate*') do @call :DoIt "%%a" "%%b"
@exit /b

:DoIt
@REM Ignoring %1, corresponding to %%a, because it's the name of the remote. 
@set "_b=%~2"
@set "_id=%_b:~0,3%"
@echo _id
@REM Use _id to find your directory and file name here.
@exit /b 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM