windows - 如何将 GIT 调用的输出放入批处理脚本中的变量中?

标签 windows git batch-file

我有一个 git 命令来获取当前 repo 的最新 SHA,如下所示:

git log --pretty=format:"%H" -n 1

我有一个 Windows 批处理脚本,我想按如下方式使用它:

SET CURRENT_SHA=???

但我不知道如何将对 git 的调用的输出放入变量中,以便我可以使用它。

编辑

我尝试了以下方法(这似乎是我在这里和其他地方读到的一般建议):

SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=* USEBACKQ" %%i IN (`git log --pretty=format:"%H" -n 1`) DO (SET CURRENT_SHA=%%i)
ECHO Current Sha: %CURRENT_SHA%

..但我得到:

fatal: failed to stat 'format:i) ECHO Current Sha: 48bce83e800b96607afb2a387c4fcd7b0b0f037e

那么大概引号有问题?

最佳答案

我没有方便测试的 Windows 系统,但我认为大致如下:

FOR /F %i IN (`git log --pretty=format:"%%H" -n 1`) DO SET CURRENT_SHA=%i

请注意,“%H”需要转义,但要在批处理文件中使用这一行,您还需要对所有内容进行双重转义。您可能还需要使用 ^ 转义双引号。我认为这应该有效:

SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=* USEBACKQ" %%a in (`git log --pretty^=format:"%%H" -n 1`) do (SET CURRENT_SHA=%%a)
ECHO Current Sha: %CURRENT_SHA%

但实际上,如果您想在 Windows 中进行 shell 编程,只需使用 Powershell 然后您就可以:

$CURRENT_SHA=git log --pretty=format:"%H" -n 1

关于windows - 如何将 GIT 调用的输出放入批处理脚本中的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37004019/

相关文章:

windows - 登录历史记录和操作系统安装日期

java - 为什么这个批处理文件不启动任何内容

git - 如何在 github for mac 中取消提交?

batch-file - 使用批处理文件删除远程计算机上存在的文件夹

c - 如何使用 C 在 Windows 中执行批处理 (.bat) 文件

git - 如何在 Git 中获取 merge 提交的父项?

C++:从映射文件中读取带有 vector 的结构

windows - 使 qt 分布整洁。删除部分dll?

windows - 触摸屏模拟器 : Are there any windows simulator to test application in touch screen environment

git - 如何在提交到 master 之前创建分支