批处理重定向输出stderr到文件并将管道输出stdout到文件

4

我有一个备份脚本,调用SVN dump,将stderr输出到文件中,然后将输出管道传输到7zip。

现在我需要使用批处理文件将此系统移植到Windows,但我似乎无法像Linux那样在一行中两次访问文件,是否有其他语法替代?

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

(以上仅为示例)

在Windows系统中,如果我尝试这样做,就会出现文件已被访问的错误。如何确保我从svnadmin和7za都能收到错误并记录到我的日志文件中?

2个回答

3
你还可以使用一个块来直接重定向到日志文件。将stdout用1>>&2重定向到stderr,然后用括号将两者组合起来,并使用单个2>>将其重定向到日志文件中。
(svnadmin dump D:\Repo\example | 7za a new.7z 1>>&2 ) 2>> %logfile%

1
这对我来说很管用:
( svnadmin dump D:\Repo\example 2>> %logfile% | 7za a new.7z >> %logfile%.tmp ) & copy %logfile%+%logfile%.tmp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接