我认为这是一个逃避问题,但我不确定,因为我已经尝试了所有可以想到的逃避组合,而且没有一个能够发挥作用。
此Git命令返回我需要存储在批处理文件变量中的提交哈希...
git show --grep="MySearchString" --pretty=format:"%H" --no-patch
此批处理文件命令有效...
for /f "delims=" %%a in ('git show --grep="MySearchString" --no-patch') do @set foobar=%%a
echo %foobar%
但是当我在--pretty=format:"%H"
部分添加批处理文件失败时......
for /f "delims=" %%a in ('git show --grep="MySearchString" --pretty=format:"%H" --no-patch') do @set foobar=%%a
echo %foobar%
我尝试使用\和^转义--pretty=format:"%H"
部分但无法运行它。我哪里错了?谢谢!
答案 0 :(得分:1)
将百分号(它是批处理中的特殊字符,将其评估为单个百分号)加倍,并使用插入符^
转义等于:
for /f "delims=" %%a in ('git show --grep^="MySearchString" --pretty^=format:"%%H" --no-patch') do @set foobar=%%a
echo %foobar%
或没有%H周围的引号也适用:
for /f "delims=" %%a in ('git show --grep^="MySearchString" --pretty^=format:%%H --no-patch') do @set foobar=%%a
echo %foobar%
命令被送到' for'需要复杂而繁琐的逃避;我发现将结果导向文件然后解析文件是一种更直接的策略。
答案 1 :(得分:-1)
你是否在没有引号的情况下尝试过它?
... --pretty-format:%H?