Windows 批处理文件以循环通过远程Git分支,并将每个分支中的类似CSV文件复制到本地目录

Windows 批处理文件以循环通过远程Git分支,并将每个分支中的类似CSV文件复制到本地目录,windows,git,batch-file,command-line,Windows,Git,Batch File,Command Line,我对批处理脚本非常陌生 为了详细说明我的问题,有一个特定的文件存在于许多不同的远程git分支中,每个csv文件在分支中的内容不同,但命名约定相似。我正在尝试编写一个批处理文件,该文件循环通过每个远程git分支,并将该文件复制到本地目录 谢天谢地,每个远程分支都遵循相同的命名约定:一个3位数的ID、一个下划线和单词update(例如,018\u update)。源目录具有以下命名格式:一个3位数的ID、一个空格和一个带空格的基于文本的名称(例如:\018 To shreads-您可以说) 我已经尽

我对批处理脚本非常陌生

为了详细说明我的问题,有一个特定的文件存在于许多不同的远程git分支中,每个csv文件在分支中的内容不同,但命名约定相似。我正在尝试编写一个批处理文件,该文件循环通过每个远程git分支,并将该文件复制到本地目录

谢天谢地,每个远程分支都遵循相同的命名约定:一个3位数的ID、一个下划线和单词update(例如,
018\u update
)。源目录具有以下命名格式:一个3位数的ID、一个空格和一个带空格的基于文本的名称(例如:
\018 To shreads-您可以说

我已经尽可能地将分支名称放入一个列表中,然后循环遍历每个分支名称,但现在我被卡住了。我想知道如何导航的一个问题是,我是否能够在
%%a
上使用通配符从远程分支名称中提取3位数的ID,并使用它来定位其中也包含3位数的目录(和文件名)

以下是我到目前为止所写的内容:

FOR /F "tokens=*" %%a  IN (
 'git branch -r --list "*???_update*" '
 ) DO (
    git checkout %%a
)
)
假设这是正确的方向,我觉得剩下的就是找到一种方法,从远程分支名称(即
%%a
)中获取3位ID,并使用它生成通配符并找到我要复制/粘贴的文件


提前感谢所有能够帮助我解决这个问题的人

这演示了如何将形式为
/
的字符串解析为两个变量
%%a
%%b
,然后将
\u id
设置为分支名称的三位前缀。如果您的分支名称看起来更像
/*####u 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

请参阅
帮助集
。另外还有
帮助呼叫
帮助设置本地
。我会使用一个简单的
…do@call…
而不是parens中的一个多行代码块“…do(…多行代码块…)。是否使用除
origin
以外的远程名称?