即使通过FTP复制,FileSystemObject也会移动文件

时间:2010-12-02 15:30:37

标签: vbscript windows-server-2008-r2 filesystemobject

我有一个程序定期检查新文件,然后处理它们。

因为我想确保文件没有通过FTP复制,所以我先移动文件 奇怪的是,在Windows Server 2008中,文件被移动,即使在复制时也是如此,并且FTP复制操作在新位置结束。

这怎么可能?

我已经在vbs文件中使用这些简单的代码行测试了这个问题:

dim fso
set fso = createobject("Scripting.FileSystemObject")
fso.MoveFile "bigfile.zip", "moved\bigfile.zip"

1 个答案:

答案 0 :(得分:1)

好吧,当您移动文件(在同一个驱动器中)时,您只是告诉文件系统该文件可以在其他地方找到,您实际上并没有移动任何数据。所以我猜这个动作继续进行并告诉文件系统现在可以找到文件,但FTP操作已经在硬盘上为实际数据分配了空间,因此文件已被移动,赢得了' t以任何方式影响数据的存储位置,因此一切正常。

如果您将文件移动到另一个驱动器,我会认为某些东西会在某处破坏。

如果您有权访问客户端,那么您可以让客户端编写另一个名为bigfile.zip.complete或类似名称的小文件,并且您的服务器应用程序可以在开始处理之前等待它,就像您那样' d确保它已完成复制(这也适用于连接中途停止并且客户端停止上传文件,即使它没有完成)。

或者,如果您无法访问客户端,也许您可​​以尝试查看文件的大小,如果它在很多秒或分钟内没有发生变化,那么它有望完成。