【问题标题】:How to redirect STDIN, STDOUT, STDERR to a file in windows batch script如何将 STDIN、STDOUT、STDERR 重定向到 Windows 批处理脚本中的文件
【发布时间】:2014-06-28 21:13:19
【问题描述】:

我已经看到了许多示例,您可以将单个命令的 STD 输入/输出/错误重定向到文件。所以我能够创建一个 myLogger.bat 作为包装器,将 myScript 的调用语句重定向到 myLogFile。

myLogger 示例代码:

CALL "%xDir%\%%1" > "%lDir%\%lFil%" 2>&1

从我执行的命令行> myLogger.bat myScriptToBeLogged.bat

但是我无法重定向 Windows 批处理文件 (.bat) 中所有命令的 STD 输入/输出/错误

是否有任何类似于“exec > $logFile 2>&1 in shell”的内容可以包含在批处理脚本的开头,它将同一脚本的所有日志重定向到一个文件。

提前致谢!

【问题讨论】:

  • 不是真的;脚本是 Windows 批处理文件 (.bat)
  • 为什么一定要成批?

标签: windows batch-file


【解决方案1】:

大多数情况下,您需要使用 1> (STDOUT)2> (STDERR) 来执行此操作

所以,例如:

dir 1>stout.txt 2>stderr.txt

有关更多详细信息,以及如何使用 STDIN 做一些聪明的事情,请参阅 here

【讨论】:

  • 在这里您将 STD out/err 独立地重定向到两个文件。但是在这种情况下,您再次为批处理文件的一个命令执行此操作dir
【解决方案2】:

你几乎拥有它。只需在重定向开始时调用例程即可。

@echo off
>test.log 2>&1 call :start %*
exit /b

:start
REM rest of script goes here.

【讨论】:

    猜你喜欢
    • 2011-03-02
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多