批处理文件FOR / F循环中的git --format字符串有问题吗?

时间:2019-02-07 14:16:25

标签: windows git batch-file

在批处理子程序中,我想获取文件的最新git日期。

因此,在for循环内,我得到了fatal: bad revision的格式,但是当我在循环外执行相同的命令时,它就可以正常工作。我也尝试过“ usebackq”并得到相同的结果。

set f=path/to/file.md

REM what I want to do...
for /f "delims=" %%p in ('git log -1 --format=^\^"%%ci^\^" -- %f%') do set g=%%p

REM test...
git log -1 --format=^\^"%%ci^\^" -- %f%

结果:

fatal: bad revision '"%ci"'
"2019-02-05 20:08:54 -0800"

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

不需要所有这些转义。需要转义的字符是%^&<>|'`,;=(),并且它们用脱字号(^)进行转义,除了%%%进行转义。您的命令(git log -1 --format="%ci" -- %f%)中有这些字符吗?

是的,等号:=。您将需要修改代码,如下所示:

set "f=path/to/file.md"

REM what you want to do...
for /F "delims=" %%A in ('git log -1 --format^="%%ci" -- %f%') do set "g=%%A"

即使您喜欢使用\ * \,也不需要转义它们。