在批处理子程序中,我想获取文件的最新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"
感谢您的帮助!
答案 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"
即使您喜欢使用\
*
\
,也不需要转义它们。