1

在 CMD 批处理触发脚本中,我使用cleartool命令将活动信息写入文件:

cleartool lsactivity -long  %CLEARCASE_ACTIVITY%>>C:\folder\activityinfo.txt

这几乎每次都有效,但偶尔由于我不知道的原因 cleartool 命令没有将信息正确写入文件,导致我无法删除的 0KB 输出文件。更重要的是,它会阻止触发器在连续尝试中正常运行。

我编写了一些代码来检查输出文件的大小是否为 0KB,但这不起作用,因为 cleartool 命令似乎保持文件打开,即使它没有写入文件。太奇怪了!

几个小时后,触发器再次起作用,因为我假设锁定的进程已解锁。

有什么办法可以避免这种现象?

问候,

安德鲁

4

1 回答 1

1

我所看到的所做的是为每次出现的 写入不同的文件cleartool lsactivity,并在完成整个过程后将这些文件聚合为一个。

例如,一种技术是在文件名中使用日期,如“文件名中的批处理命令日期和时间”。

set hr=%time:~0,2%
if "%hr:~0,1%" equ " " set hr=0%hr:~1,1%
cleartool lsactivity -long  %CLEARCASE_ACTIVITY% > C:\folder\activityinfo_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%.txt

请注意,我只使用 ' >',而不是 ' >>',因为文件 ' activityinfo_YYYYMMDD_HH:MM:SS' 在每次 cleartool 调用时总是不同的。

OP Andrew 评论

我已将命令设置为使用“ ”而不是“ ”(附加)cleartool lsactivity写入(或覆盖)文件。>>>

此外,由于有时系统中会出现故障,因此我在命令后设置了 5 秒的睡眠时间,以防写入和创建文件时出现延迟

但是,从下面的评论中,还建议在脚本的开头添加一个 sleep :

我在脚本开头添加了 20 秒的初始睡眠,我还没有遇到任何问题。

于 2013-02-21T09:56:47.157 回答