我有一个bat文件,作为大型维护系统的一部分,该系统每晚运行,执行一些内务管理、SVN更新等。其中一部分涉及移动/删除文件,但偶尔会因为另一个进程没有释放要移动的文件/目录的句柄而失败。是否有任何方法可以强制BAT文件覆盖任何现有句柄并继续MOVE?我只能想到使用ProcessExplorer/Assassin的查找方法,尽管我甚至不确定它是否有效。或者"睡一觉",如果第一次失败了,再重新尝试,尽管这比解决根本问题更靠运气。非常感谢您的任何想法/建议。谢谢
Robocopy有移动功能,可以等待错误
以下是我在类似情况下所做的一些事情:
- 在执行
move
命令之前,请确保其他脚本线程CD
位于目标目录之外 - 使用robocopy(来自资源工具包)和重试
/r:3
和等待/w:5
等选项 - 将第一个操作编写为
COPY
,以便脚本可以继续工作,然后在脚本的后面,在旧的/不需要的位置执行删除操作 - 正如您已经提到的,使用IF ERRORLEVEL命令创建一个小的重试循环,以测试
MOVE
命令的成功