質問

新しいファイルを定期的にチェックしてから処理するプログラムがあります。

ファイルがFTPを介してコピーされていないことを安全にしたいので、最初にファイルを移動します。
奇妙なことに、Windows Server 2008では、コピーされている場合でもファイルが移動され、FTPコピー操作が新しい場所で終了します。

これはどのように可能ですか?

私は問題をテストしました、VBSファイルでこの単純なコード行を使用してください:

dim fso
set fso = createobject("Scripting.FileSystemObject")
fso.MoveFile "bigfile.zip", "moved\bigfile.zip"
役に立ちましたか?

解決

ファイルを(同じドライブで)移動するとき、ファイルシステムにファイルがどこか他の場所にあることを伝えているだけで、実際にデータを移動していません。そのため、動きが先に進んで、ファイルが見つかるファイルシステムに伝えていると思いますが、FTP操作はすでに実際のデータのハードドライブにスペースを割り当てているため、ファイルが移動されたという事実が勝ちました。 tデータが何らかの方法で保存される場所に影響を与えるため、すべてが機能します。

ファイルを別のドライブに移動した場合、何かがどこかに壊れると思います。

クライアントにアクセスできる場合は、クライアントに名前を付けて別の小さなファイルを書くことができます bigfile.zip.complete 同様に、サーバーアプリは処理を開始する前にそれを待つことができます。その方法では、コピーが完了していることを確認します(これは、接続が途中で下がって、クライアントがファイルのアップロードを停止した場合にも機能します。終了した)。

または、クライアントにアクセスできない場合は、ファイルのサイズを見てみようとすることができます。数秒または数分で変更されていない場合は、できれば終了します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top