我有一个批处理文件正在尝试运行以下内容:
FOR /F "tokens=1" %%G IN ('git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a') DO echo %%G
这会导致 git 错误“致命:无效的对象名称‘格式’。”
但是,如果我只是将命令本身放在批处理文件中,我会得到预期的输出。
git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a
产生:
Files/MyFiles/header.html
Files/MyFiles/foo.html
问题与“格式:”周围的引号有关。
我试过使用“”转义它们,但无济于事。我也试过了^。我试过使用 usebackq 参数。
如果你去掉 --pretty="format:"参数,这个循环也可以工作,但是我会插入一堆额外的文本。
最佳答案
您可以重定向不会导致问题的输出:
git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a >> out.tmp
FOR /F "tokens=1" %%G IN (out.tmp) DO echo %%G
del out.tmp
这应该通过将输出重定向到名为 out.tmp
的文件然后在您完成后将其删除来工作。
关于windows - 如何在包含引号 ( "") 的批处理文件中运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641138/