批处理仅在块执行成功时写入日志

时间:2017-12-14 21:36:33

标签: batch-file cmd

在像这样的代码中

(
    @echo before
    <my .net build command line>
    @echo after %ERRORLEVEL%
) >> mylog.txt

如果我的.net构建命令成功构建,我将所有内容写入mylog.txt。但是如果解决方案构建失败,则不会写任我知道errorlevel为1(删除>> mylog.txt进行测试)。我甚至想要输出失败写入日志。怎么处理这个?

1 个答案:

答案 0 :(得分:2)

以下是该脚本的固定版本。

SETLOCAL ENABLEDELAYEDEXPANSION

(
@echo before
@rem [my .net build command line]
@ECHO AFTER !ERRORLEVEL!
) >> mylog.txt 2>&1

Squashman提到了延迟扩张问题。所以我不在这里解释。

2>&1将STDERR重定向到STDOUT,然后将组合的STDOUT重定向到mylog.txt