Batch Echo Style: 两条语句在同一行

Batch Echo Style: two statements into same line

我有一些代码 运行,但我想让它变得更好。

目前我的代码是:

@echo off
echo Starting Program 1 ... >> %log%
call Program1.cmd
if %ERRORLEVEL%==1 (
    echo Error. >> %log%
) else (
    echo Success. >> %log%
)

我想将这两个回声保留在代码中,因为出于调试原因我发现它更好。但是,我不喜欢它有两条输出线。我需要如何更改代码才能获得此输出:

Starting Program 1 ... Success

感谢您的帮助, 彼得

您必须将第一条消息存储到一个变量中,然后在最后一次重定向到文件时使用它。

要使用您的代码,它看起来像这样:

@echo off
set "log=C:\t\so\batch\log.log"
set "message=Starting Program 1 ... "
call Program1.cmd
if %ERRORLEVEL%==1 (
    echo %message% Error. >> %log%
) else (
    echo %message% Success. >> %log%
)

编辑 在我上面的脚本中,如果调用的脚本出现严重错误,您可能会丢失日志信息。

你可以这样做:

@echo off
set "log=C:\t\so\batch\log.log"
echo | set /p message="Starting Program 1 ... " >> %log%
call Program1.cmd
if %ERRORLEVEL%==1 (
    echo Error. >> %log%
) else (
    echo Success. >> %log%
)

/p开关:

The /P switch allows you to set the value of a variable to a line of input entered by the user. Displays the specified promptString before reading the line of input. The promptString can be empty.

注意:这里的消息只是一个虚拟变量。

dbehham 就此主题给出了一个复杂的答案。

你可以误用set /p命令来输出没有换行的行。

@echo off
<nul set /p "=Starting Program 1 ..." >> %log%
call Program1.cmd
if %ERRORLEVEL%==1 (
    echo Error. >> %log%
) else (
    echo Success. >> %log%
)