几个批处理进程的一个日志文件锁定

时间:2014-01-02 23:19:51

标签: batch-file logging discover

我有非常基本的批处理文件知识。我的第一个脚本是我发现通过Windows任务调度程序导出Oracle Discoverer报告的东西。这基本上就是我所知道的,我有几个(大约40个左右)在不同的时间运行,有的每30分钟运行一次。它们有时会在时间上重叠。

我的问题不是具体的发现者导出,而是错误的记录。我想将所有内容记录到一个日志文件中......使用excel和access进程,我可以循环直到空闲,一切都很好;使用发现者批处理文件,日志文件在开始时被锁定,并且在完成之前不会让任何其他内容登录。其中一些发现者报告可能需要30分钟或更长时间,搞乱我的所有运行。

以下是我的bat文件示例:

@echo off
echo my process %date% %time% >>c:\test.log
c:\orant\DISCVR4\DIS4USR.EXE /connect MyUserID/MyPassword@myserver /open "c:\DiscoReport.DIS" /export xls "c:\MyFile.xls" /batch 1>>c:\test.log 2>>&1

我有一个bat文件,其中包含多个单独的进程bat文件,因此它们一次运行一个。这很好。但是当运行时间超过估计值时,则下一次运行失败...因为它们都是通过运行disco开始的,并且日志文件始终被锁定直到结束......有什么我可以做的就是打开和关闭它只在添加结果时?

我已经找到了答案,我相信可以通过TEE完成某些工作,或者将结果重定向到null,然后将其用作输入管道写入日志?但我真的不知道该怎么做......看,试过,几周和几周,都无法得到任何工作......非常好,我相信那些知道的人,可以用一条线做到这一点。请帮忙......

1 个答案:

答案 0 :(得分:0)

基本上,不 - 如果您希望日志文件按时间顺序包含所有事件。

您可以让发现者进程创建其各自的日志文件然后

type discoverer.log.file >>logfile
del discoverer.log.file

将所有发现者进程输出组合在日志文件中。

否则,您必须忍受多个日志。

我严重怀疑TEE可以这样做,因为TEE本身需要保持日志打开,所以你回到了开始 - 但我会强调我没有'试了一下。