批量重定向输出stderr到文件和管道输出stdout到文件

时间:2011-04-14 13:04:38

标签: windows logging batch-file redirect

我有一个调用SVN转储的备份脚本,将stderr输出到文件然后将输出通过管道传输到7zip。

我现在必须使用批处理文件将此系统移植到Windows,但我似乎无法在一行中访问该文件两次,就像linux会让我一样,是否有其他语法?

svnadmin dump D:\Repo\example 2>> %logfile% | 7za a new.7z >> %logfile%

(上面只是一个例子)

在Windows中,如果我尝试这样做,我会收到一个错误,即文件已被访问。我怎样才能确保从svnadmin以及从7za到我的日志文件都出错?

2 个答案:

答案 0 :(得分:3)

您还可以使用块直接将两者重定向到日志文件。

将带有1>>&2的stdout重定向到stderr,然后将它们与括号组合,并将其与单个2>>重定向到日志文件。

(svnadmin dump D:\Repo\example | 7za a new.7z 1>>&2 ) 2>> %logfile%

答案 1 :(得分:1)

这对我有用:

( svnadmin dump D:\Repo\example 2>> %logfile% | 7za a new.7z >> %logfile%.tmp ) & copy %logfile%+%logfile%.tmp