我认为这是一个逃避问题,但我不确定,因为我已经尝试了我能想到的所有逃避组合,但没有一个能够奏效。
这个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"
部分,但无法让它运行。我哪里错了?谢谢!
将百分号(它是批处理中的特殊字符,将其评估为单个百分号)加倍,并使用插入符号^
转义等于:
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'的命令需要复杂和繁琐的逃逸;我发现将结果定向到一个文件然后解析文件是一个更直接的策略。
你没有报价就尝试过吗?
... --pretty-format:%H?