正确使用带百分号的命令

  • 本文关键字:百分 命令 git batch-file
  • 更新时间 :
  • 英文 :


我想在批处理文件中使用git命令git show -s --format=%h,想将结果存储在变量中。

这不起作用:

FOR /F %%i IN ('git show -s --format=%h') DO set commit=%%i
echo commit=%commit%

因为对于echo on,它执行的命令是:

FOR /F %i IN ('git show -s --format') DO set commit=%i

输出为:

commit=

这种方法有效,但似乎很奇怪的解决方案:

set hhh="=%%h"
FOR /F %%i IN ('git show -s --format%hhh%') DO set commit=%%i

因为执行的命令是:

FOR /F %i IN ('git show -s --format"=%h"') DO set commit=%i

输出正确:

commit=6446e53

我想这与变量在带有百分号的批处理文件中的引用和使用方式有关

是否有一个更好的解决方案,可以正常执行:git show -s --format=%h

以下是如何在批处理文件中转义字符的列表:escape characters-作者Rob van der Woude

万一将来链接断开:

的正则表达式模式中需要
要转义的字符 转义序列 备注
%
^ ^ 在双引号字符串中可能并不总是必需的,但这不会有什么影响
& ^&
< ^<
> ^>
| ^|
' ^' 仅在FOR/F";主题";(即括号之间),除非使用backq
` ^` 仅在FOR/F";主题";(即括号之间),如果使用backq
^, 仅在FOR/F中需要;主题";(即括号之间),即使在双引号字符串中也是如此
^
= ^=
( ^(
) ^)
^^ 仅当延迟变量扩展处于活动状态时才需要
"> "> 仅在FIND的搜索模式中需要
\\ 仅在FINDTR
[\[
]>\]
">\">
\
*\*
\