批处理脚本:在链接命令时使用彩色echo出现问题

3

我目前在尝试使用批处理脚本打印彩色文本时遇到了问题。

我的问题只会发生在我尝试在另一个命令(这里是git命令)之后以彩色方式打印,具体取决于上一个命令的状态代码:使用 && 或 ||。

例子:

@echo off
cls
for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"

echo %ESC%[92mGreen%ESC%[0m
echo %ESC%[91mRed%ESC%[0m
echo %ESC%[92mGreen%ESC%[0m && echo %ESC%[91mRed%ESC%[0m
git pull || echo %ESC%[92mGreen%ESC%[0m && echo %ESC%[91mRed%ESC%[0m

pause

enter image description here

如您所见,在我执行git pull命令后,彩色回显不再起作用。如果我使用&&而非||,并且git pull返回成功,情况也是一样的。

有任何想法吗?

谢谢。

1个回答

3

只需调用标签,并在标签内引用颜色:

@echo off
cls
for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
call :green
call :red
git pull && call :green || call :red

goto :eof
:green
echo %ESC%[92mSuccess%ESC%[0m
goto :eof
:red
echo %ESC%[91mFailed%ESC%[0m
goto :eof

结果如下:

结果是:

enter image description here

请注意条件运算符的顺序:

command && errorlevel is 0 || errorlevel is larger than 0

换句话说,如果成功执行该命令,则返回“and”,否则返回“or”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接