我有一个批处理文件,它试图运行以下命令:
FOR /F "tokens=1" %%G IN ('git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a') DO echo %%G
这会导致git错误��fatal: Invalid object name 'format'
。
但是,如果我只是将命令本身放在批处理文件中,我会得到预期的输出。
git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a
生产:
Files/MyFiles/header.html
Files/MyFiles/foo.html
这个问题与"format:"
周围的引号有关。
我试过用""
来转义它们,但没有用。我也试过^
。我尝试使用usebackq
参数。
如果去掉--pretty="format:"
参数,这个循环也可以工作,但是我会插入一堆额外的文本。
3条答案
按热度按时间14ifxucb1#
您可以重定向输出,这应该不会导致问题:
通过将输出重定向到一个名为
out.tmp
的文件,然后在完成后删除它,应该可以实现这一点。06odsfpq2#
正确答案在Eryk Sun的评论中:需要转义=。所以命令应该是:
这应该可以工作(与原始的唯一区别是
^=
而不是=
)。efzxgjgh3#
在PowerShell中,这应该非常简单