2012-06-07 59 views
0

我试图通过批处理文件将文件从UNIX/Windows目录移动到SharePoint目录。我知道我想使用的命令只是一个简单的move g:\...\*.* z:\,但我不想尝试移动当前打开的任何文件。有没有办法检查目录中的文件是否打开/正在使用,然后只对未打开的文件执行移动?检查文件是否打开

+0

可能[duplicate](http://stackoverflow.com/questions/162291/how-to-check-if-a-process- is-running-a-batch-script) –

+0

哪个操作系统控制源目录?它是本地fs(ntfs)吗? – wmz

+0

批处理文件将在具有映射的两个目录的Windows Server计算机上运行。 – Bigby

回答

1

在Unix上,您可以使用fuser,分别在Windows Sysinternals handle实用程序中查询哪些进程打开了文件。

请记住,这两个必须在控制源文件系统的系统上执行,而不是在复制机上执行。

这种方法普遍的问题是检查移动操作也不是原子的:你可能永远无法确定该文件的状态没有改变你检查,但以前你开始移动/复制,但是如果我正确的假设你有一个制作人的场景,将你的共享驱动器上的东西放在共享的驱动器上 - 被Sharepoint使用,并且你想在尝试移动之前确保它被“烘焙” - 那么通常的做法是通过移动它来控制它仅在工作完成时才共享资源。如果你没有直接控制生产者,你可以通过使用上面提到的提示来实现这一点