复制

时间:2016-03-14 08:23:16

标签: vb.net robocopy

我有一个针对Robocopy命令的Windows VB前端。以下是将参数传递给Robocopy的代码行:

.StartInfo.Arguments = """" & txtCopyFrom.Text & """ """ & txtCopyTo.Text & _
                       """ /E /B /XJ /XF ""~*.*"" ""*~.*"" ""desktop.ini"" ""Thumbs.db"" "".lock"" "".Sync*""" & _
                       " /xd ""Rubbish"" "".Sync*"" "".Box Sync"" ""_private"" ""Outlook Files"" /FFT /R:2 /W:5 /V /TEE"

除非用户想要修改正在复制的文件,否则一切正常。用户从他们的程序中获取错误,然后在复制文件时必须等待几分钟(文件大小可达1GB,并且正在被移植到USB记忆棒。

是否有一个开关或某种方法让Robocopy在复制时不锁定文件?显然,Robocopy需要中止副本并等待文件可用,以便它可以再次尝试。我已经在网上搜索了一个解决方案,但所有问题似乎都是Robocopy没有复制锁定文件的反过来。

关于我正在做的事情的更多细节:

我的代码每隔30秒用上面的标志调用Robocopy(我知道robocopy可以自行循环,但它并没有做我想做的事情)。我设想我的应用程序只是在当天开始运行,然后在一天结束时关闭。在另一台机器上,用户将打开一些第三方成像查看软件,该软件将锁定正在打开的文件,更新一些图像的元数据,然后保存更改。出现问题的原因是我的软件在用户之前锁定了图像文件,然后用户无法编辑他们的文件。

由于

克里斯蒂安

1 个答案:

答案 0 :(得分:1)

在用户想要访问该文件的代码中,您可以在代码之前添加此文件以访问该文件。

If Not p.HasExited Then
    p.Close()
End If
Threading.Thread.Sleep(100) ' to give the process time to close the file and close itself