今天我运行了一个批处理脚本。实际上,它仍在运行,所以我希望在为时已晚之前找出解决方案。
my_script.bat > output.log
事实证明,该日志文件将比我预期的要大得多。哎呀!所以我想截断它。所以我尝试了这个,但失败了:
echo. > output.log
The process cannot access the file because it is being used by another process.
哦,哦。它适用于Linux,所以我想我只是假设它也适用于Windows。我该怎么办?
我可以停止我的批处理脚本,然后通过更智能的日志记录重新启动它。我的脚本看起来像这样:
echo "First iteration"
my_program.exe --parameters
echo "Second iteration"
my_program.exe --parameters
echo "Third iteration"
my_program.exe --parameters
...
我不想kill my_program.exe
,因为它正在做一些非常重要的事情。我希望在my_program.exe完成后批处理脚本“中断”。我担心如果我做Ctrl-C,它会杀死my_program.exe,这不会很好。
我能做些什么:
这是Windows 2003 SP2服务器。救命啊!
答案 0 :(得分:4)
使用FILE_SHARE_READ打开文件,因此您无法删除或截断它。但你可以做以下几招:
这将阻止cmd.exe写入日志文件:
脚本会更进一步,日志将停止,并且“句柄无效”。在控制台中。
答案 1 :(得分:0)
很容易杀死批处理脚本,但保持my_program.exe的当前实例运行。您可以使用任务管理器终止相关的cmd.exe进程,但最简单的解决方案就是重命名批处理文件。