[英]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.