问题描述
我有一个bat文件,它是每晚运行的大型维护系统的一部分,执行一些客房整理,SVN更新等。部分操作涉及移动/删除文件,但是,由于另一个进程未释放手柄,此操作有时会失败在要移动的文件/目录上。有什么方法可以强制BAT文件覆盖任何现有的句柄并继续执行MOVE?我只能想到使用ProcessExplorer / Assassin的查找方法-尽管我不确定该方法是否可行。替代地,“睡眠”然后如果它第一次失败则重新尝试,尽管这比解决根本问题要靠运气。任何想法/建议,不胜感激。谢谢。
解决方法
Robocopy具有移动功能,可以等待错误
,这是我在类似情况下所做的一些事情:
在执行“ 0”命令之前,请确保其他脚本线程“ 1”退出目标目录。
将robocopy(来自Resource Kits)使用带有重试
/r:3
的选项,然后等待3ѭ。
将第一个动作编写为ѭ4Script,以便脚本可以继续工作,然后在脚本的更高版本中,在旧的/不需要的位置进行删除。
正如您已经提到的,使用IF ERRORLEVEL命令创建一个小的重试循环以测试the5ѭ命令的成功。