我有一个批处理文件,尝试运行以下内容:
FOR /F "tokens=1" %%G IN ('git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a') DO echo %%G
这会导致 git 错误 致命错误:无效的对象名称 'format'
。
但是,如果我只是将命令本身放在批处理文件中,我会得到我期望的输出。
git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a
生成:
Files/MyFiles/header.html
Files/MyFiles/foo.html
问题与"format:"
周围的引号有关。
我尝试使用""
进行转义,但无济于事。我还尝试了^
。我尝试使用usebackq
参数。
如果您删除--pretty="format:"
参数,则此循环也可以正常工作,但是这样会插入大量额外的文本。
FOR /F "usebackq tokens=1...
,然后在你的git
命令周围使用反引号。这些反引号类似于你目前使用的单引号,但是倾斜的方向相反。 - Mark Setchell=
字符,例如--pretty^="format:"
。否则我认为它是可以的。 - Eryk Suncdb cmd /c test.cmd
),并设置了一个断点(bp kernel32!CreateProcessW
)来检查生成子进程的命令行(第二个x64参数:du @rdx
)。 - Eryk Sun