批量回声样式:两个语句合为同一行



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

目前我的代码是:

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

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

启动程序 1 ...成功

谢谢你的帮助, 彼得

您可以误用set /p命令来输出不换行的行。

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

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

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

@echo off
set "log=C:tsobatchlog.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:tsobatchlog.log"
echo | set /p message="Starting Program 1 ... " >> %log%
call Program1.cmd
if %ERRORLEVEL%==1 (
echo Error. >> %log%
) else (
echo Success. >> %log%
)

/p开关:

/P 开关允许您将变量的值设置为 用户输入的输入。 在之前显示指定的提示字符串 读取输入行。 提示字符串可以为空。

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

关于这个话题,dbehham有一个复杂的答案。

最新更新