"for"与"usebackq"不使用后引号

Bea*_*rog 7 windows batch-file

我有一个非常愉快的批处理文件,直到最后几次运行,现在它不是.违规代码如下:

set uncommittedchanges=1
for /f "tokens=* usebackq" %%a in (`"C:\Program Files\Git\cmd\git" -C "\my\git\repository" status`) do (
    if "%%a" == "nothing to commit, working directory clean" (
        set uncommittedchanges=0
    )
)
Run Code Online (Sandbox Code Playgroud)

而我得到的错误是

"C:\ Program"不被识别为内部或外部命令,可操作程序或批处理文件.

我确定我没有对这些行进行任何更改,因为它是最后一次工作,我看不出代码有什么问题.

任何人都可以发现什么是错的,或者建议我可能无意中改变了影响usebackq的设置?

jeb*_*jeb 3

这是调用子 cmd.exe 实例的错误。
您需要使用解决方法来避免第一个标记使用未转义的空格。

最简单的方法是使用它,CALL因为它将您的程序令牌移动到第二位,并且在那里它可以正常工作。

for /f "tokens=* usebackq" %%a in (`CALL "C:\Program Files\Git\cmd\git" -C "\my\git\repository" status`) do (
Run Code Online (Sandbox Code Playgroud)

Windows启动命令无法执行批处理文件