我希望在运行批处理脚本时将一些文本保留在命令窗口的顶部。
我制作了这个 gif 作为演示
问题是我回显“编译项目A”,然后一些命令调用msbuild,所以我无法控制以下几行,它只是msbuild的输出。但我希望“编译项目 A”保留为第一行,直到“编译项目 B”到达顶部,此时它将取代它。
好的,现有代码。我有一个基于一些参数构建的函数,
:buildFunction22
@ECHO off
SET name=%~1
SET compileCondition=%~2
SET buildPath=%~3
SET binPath=%~4
SET buildErrorName=%~5
SET compileSub=%~6
SET s=
IF %compileCondition% EQU 1 (
IF !compileSub! EQU 0 (
SET /A compileCurrent=!compileCurrent!+1
) ELSE IF !compileSub! EQU 1 (
SET /A compileCurrent=!compileCurrent!+1
)
IF !compileSub! GEQ 1 (
SET s=.%compileSub%
)
ECHO.
ECHO [95mCompiling !name! (!compileCurrent!!s! / !compileCount!^^^) [0m
ECHO.
@TITLE Compiling !name! (!compileCurrent!!s! / !compileCount!^^^)
ECHO Deleting bin path
@ECHO OFF
del !binPath! /f /q
@ECHO ON
%msBuildPath22% "%buildPath%" %msBuildOptions%
SET /A "%~4=!%4!+!ERRORLEVEL!"
ECHO Completed %name%
CALL :printElapsedTime
)
EXIT /B 0
这样称呼
CALL :buildFunction22 "!nameSmcTherm!" !compileSmcChils! !projectPathSmcTherm! !binPathSmcTherm! buildErrorSmcTherm 0
CALL :buildFunction22 "!nameCszEztTc!" !compileCszChils! !projectPathCszEztTc! !binPathCszEztTc! buildErrorCszEztTc 0
CALL :buildFunction22 "!nameApsLoads!" !compileApsLibrs! !projectPathApsLoads! !binPathApsLoads! buildErrorApsLoads 1
CALL :buildFunction22 "!nameApsPower!" !compileApsLibrs! !projectPathApsPower! !binPathApsPower! buildErrorApsPower 2
这就是控制台窗口现在的样子
我想保留我用过的颜色。
有没有办法使特定的彩色文本行固定到命令窗口的顶部,然后使该类型的每个后续行替换它并保留在那里,直到下一行?
评论中提到了ESC[2r
将滚动区域设置为从第二行到屏幕底部的所有内容。但是,当您想在每个部分中书写时,您必须使用
ESC[1;1H
和
ESC[2;1H
在两个部分之间移动。