在 FOR 循环中将百分号用作命令时如何转义百分号?

How to escape percent symbol when using it as a command in a FOR loop?

我正在尝试使用 de git log 命令结果作为 for 循环的输入,但似乎不可能!我已经尝试使用 %%、^%、%%%、^%^%、enableDelayedExpansion 和其他:

@echo off
for /f %%s in ('git log --reverse --format=%h') do (
  echo git pull
  echo git reset --hard %%s
  pause
)

我需要的git命令是:git log --reverse --format=%h

问题是“%h”在 for 中不起作用。例如,当我使用 git log --reverse 时,它起作用了。

for /f %%s in ('git log --reverse --format^=%%h') do (

应该可以解决你的问题。

您可以定义格式变量

set "format=--format=%%h"
for /f %%s in ('git log --reverse %%format%%') do (

这样它甚至可以处理更复杂的格式,例如 %cd%H(提交者日期和散列)

set "format=--format=%%cd%%H"
for /f %%s in ('git log --reverse %%format%%') do (