【问题标题】:Batch script : issue with colored echo when chaining commands批处理脚本:链接命令时出现彩色回显问题
【发布时间】:2020-07-23 09:20:19
【问题描述】:

我目前在尝试使用批处理脚本以彩色回显某些文本时遇到问题。

我的问题仅发生在我尝试在另一个命令(此处为 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

如您所见,在我的 git pull 命令之后,颜色回显不再起作用。如果我使用 && 而不是 || 这将是相同的如果 git pull 返回成功。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: windows batch-file command-line colors


    【解决方案1】:

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

    @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
    

    结果:

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

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

    换句话说,命令and如果成功or如果不成功

    【讨论】:

      猜你喜欢
      • 2014-06-16
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多