如何在批处理文件中读取错误输出流



我有一个启动服务器的批处理脚本。然后,该服务器将其日志打印到stdout和stderr的情况下。

我想将stdout和stderr重定向到TEE命令以拆分输出。使用Unxutils的tee命令,这很好。

但是,为了使我的应用程序便携

我编写了一个批处理脚本,该脚本读取了该答案中建议的stdout(2. CodeBlock(。

这有效,但仅适用于重定向的Stdout,而不是用于stderr。

注意:文件和命令行中缺少STDERR的输出。

我该如何读这两个流?

我如何重定向输出(%是服务器,%2是我希望日志的文件(?

%1 2>&1 | %~dp0tee.bat -a %2

这正常工作(因为它称为unxutils,而不是我的批处理脚本(:

%1 2>&1 | tee -a %2

我如何读取tee.bat中的输入:

for /F "tokens=*" %%a in ('findstr /n $') do (
    set "line=%%a"
    setlocal EnableDelayedExpansion
    set "line=!line:*:=!"
    echo(!line!
    if %append%==true (
        echo(!line! >> %output%
    ) else (
        echo(!line! > %output%
    )
    endlocal
)

PowerShell具有Tee-Object CMDLET。$Input变量接收stdin。

echo asf 2>&1 | powershell -NoLogo -NoProfile -Command "$Input | Tee-Object -FilePath './tee.txt'"

另请参见:https://stackoverflow.com/a/38668360/447901

相关内容

  • 没有找到相关文章

最新更新