当被另一个进程使用时,以编程方式清空大文本文件

我正在运行一个已经进行了很多个小时的批处理作业,它所生成的日志文件的大小非常快,我担心磁盘空间。

有什么方法可以通过命令行,否则,我可以挖掘该文本文件(设置其内容回到没有)与该实用程序仍然有一个文件的句柄?

我不想停止这项工作,只想通过这个文件释放磁盘空间。

我在Vista上,64位。

谢谢您的帮助,

那么,这取决于工作如何实际工作。 如果它是一个很好的小男孩,并且它将日志信息输出到stdout或stderr,则可以将输出重定向到您编写的程序,然后将该内容写入磁盘并管理大小。

如果你有权访问作业的代码,你可以基本上告诉它在每次写入(希望这是一个附加操作)后关闭文件,然后你将有一个实际上可以擦除文件的时间片。

如果你没有任何一个,这将是一个艰难的。 如果有人对文件有一个开放的句柄,那么IMO就不会要求应用程序的开发人员找到更好的解决方案,或者只是清除磁盘空间。

取决于它如何写日志文件。 你不能只是删除文件的开始,因为文件句柄的下一个位置写了一个偏移量。 即使您刚刚删除了第一个50MB,它仍然会以100mb写入文件。

你可以尝试重命名文件,希望它只是创建一个新的。 这通常是滚动日志的工作原理。

您可以使用滚动日志类,它将包装常规文件类,但在文件达到最大指定大小时静默地回溯到文件的开头。

这是一个非常简单的包装,要么自己写,要么尝试在网上找到一个实现。