【问题标题】:capture process cannot access捕获进程无法访问
【发布时间】:2010-11-19 11:20:18
【问题描述】:

有如下一行命令:

statdump -zdl %db% > "%ckpdb_dir%"\statdump_%db%.log

Statdump 的结果被发送到日志文件,但我希望如果有一些错误,例如 statdump 已被另一个进程使用,然后我收到消息“进程无法访问文件,因为屏幕上的另一个进程正在使用它,但我想将这些消息捕获到一个文件中。

我试过了:

statdump -zdl %db% > "%ckpdb_dir%"\statdump_%db%.log > ckpdb.log

但不是解决方案...

顺便说一句,发生这种情况时不会产生错误

【问题讨论】:

    标签: file batch-file windows-xp ingres


    【解决方案1】:

    试试这个:

    statdump -zdl %db% -o "%ckpdb_dir%\statdump_%db%.log" 2> error.log
    

    【讨论】:

    • “-o”标志不像你想象的那样工作,它会在 db.log 文件中写入正确的 sintax 以与 statdump 一起使用(所以错误)
    • 也许我认为只有在将输出直接写入文件时才会发生这种情况,因为在这种情况下只有一个进程可以写入它
    【解决方案2】:

    您想将 stderr 重定向到 stdout 以外的其他地方,如下所示:

    statdump -zdl %db% >"%ckpdb_dir%\statdump_%db%.log" 2>err.log
    

    最后一部分将stderr重定向到文件err.log。

    【讨论】:

    • 我已经将该行运行到一个批处理文件中,以及 Windows 的另一个终端命令中的同一文件,但显示的消息而不是写入 err.log 的消息:(
    • @aemme 你能用这个更好地解释一下你在 err.log 中得到了什么吗?
    • 这个命令说明了原理:“xcopy sdfjls >log.txt 2>err.txt”。它创建两个文件,log.txt 和 err.txt,一个带有 stdout 的输出,另一个带有 stderr 的输出。
    • 也因为 %errorlevel% 是在 tah 行之后管理的,但是这个消息是用 %errorlevel% = 0....
    • 是的,sterr 工作得很好,但我告诉你的消息总是显示在监视器中......
    猜你喜欢
    • 1970-01-01
    • 2017-05-02
    • 2021-08-04
    • 1970-01-01
    • 2012-02-04
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多