每日的 Windows 计划任务会触发批处理脚本,该脚本使用简单的复制例程将程序文件移动到服务器上的文件夹中。
rem deploy programfiles
copy dailybuild\*.dll "\\myserver\programfiles" /Y
copy dailybuild\*.exe "\\myserver\programfiles" /Y
这种方法很有效,除非有人实际运行该可执行文件,而文件被锁定则会导致复制失败。
由于这是在终端服务器上,并且用户可能从共享文件夹运行 exe 文件(而不是在终端服务器上创建进程),所以我找不到正确的方法来解决这个问题。
在执行复制之前,我该如何释放任何锁定的文件?粗略的解决方案可能是重新启动终端服务器,但我希望还有其他解决方案。
目前我正在使用常规批处理脚本,还没有研究过 powershell。
有人对这个问题有“最佳实践”解决方案吗?
答案1
您可以使用第三方工具来帮助您完成此操作。有一个名为“HoboCopy”的工具可以利用卷影复制来复制正在使用的文件。
这里是一篇很酷的 howtogeek 文章,介绍如何使用它。