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

Vbscript 即使通过FTP复制文件,FileSystemObject也会移动文件,vbscript,windows-server-2008-r2,filesystemobject,Vbscript,Windows Server 2008 R2,Filesystemobject,我有一个程序,定期检查新文件,然后处理它们 因为我想确保文件不会通过FTP复制,所以我先移动文件。 奇怪的是,在WindowsServer2008中,即使在复制文件时,文件也会被移动,FTP复制操作会在新位置结束 这怎么可能呢? 我在vbs文件中使用以下简单代码行测试了该问题: dim fso set fso = createobject("Scripting.FileSystemObject") fso.MoveFile "bigfile.zip", "moved\bigfile.zip"

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

因为我想确保文件不会通过FTP复制,所以我先移动文件。
奇怪的是,在WindowsServer2008中,即使在复制文件时,文件也会被移动,FTP复制操作会在新位置结束

这怎么可能呢?

我在vbs文件中使用以下简单代码行测试了该问题:

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

嗯,当您移动一个文件(在同一个驱动器中)时,您只是告诉文件系统该文件可以在其他地方找到,实际上并没有移动任何数据。所以我猜移动会继续,并告诉文件系统现在可以在哪里找到文件,但是FTP操作已经在硬盘上为实际数据分配了空间,因此文件被移动的事实不会以任何方式影响数据存储的位置,所以它都可以工作

如果你把文件移到另一个驱动器,我想某处会有东西坏掉

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


或者,如果您无法访问客户端,您可以尝试查看文件的大小,如果文件在这么多秒或分钟内没有更改,则有望完成。

当您移动文件(在同一驱动器中)时,您只是告诉文件系统该文件可以在其他地方找到,而实际上并没有移动任何数据。因此,我猜移动会继续,并告诉文件系统现在可以在哪里找到该文件,但FTP操作已经在硬盘上为实际数据分配了空间,因此该文件具有即使移动了,也不会以任何方式影响数据的存储位置,因此一切正常

如果你把文件移到另一个驱动器,我想某处会有东西坏掉

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


或者,如果您没有访问客户端的权限,也许您可以尝试查看文件的大小,如果它在这么多秒或分钟内没有更改,那么它就有望完成。

我已经解决了尝试打开文件进行写入的问题。但我想知道为什么操作系统允许它我已经解决了尝试打开文件的问题或者写作。但我只是想知道为什么操作系统允许它