CMD批处理文件调用cleartool命令在写入文件时冻结脚本

时间:2013-02-21 09:31:52

标签: batch-file triggers clearcase

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

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

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

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

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

有没有办法避免这种现象?

此致

安德鲁

1 个答案:

答案 0 :(得分:1)

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

例如,一种技术是在文件名中使用日期,例如" Batch command date and time in file name"。

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& #39;每个cleartool调用总是不同的。

OP Andrew comments

  

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

     

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

comments below开始,还建议在脚本的开头添加睡眠:

  

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