フォルダーコピー時間を短縮するには?

解決


ゆうたろう  2003-06-11 22:44:30  No: 78215

フォルダーのコピー処理として以下のように作成したのですが
コピーに時間が、かかりすぎるのでどうにかしたいのですが
どう改造したら良いのでしょう
同じフォルダーをエクスプローラでコピーすると、1分ぐらいで
終わるのですが、以下を実行すると15分位掛かってしまいます。
宜しくお願いいたします。

Private Sub sub_セーブ処理_コントロール()
    Dim F_FLD, T_FLD
    Dim FS, F

    Set FS = CreateObject("Scripting.FileSystemObject")
    Set F_FLD = FS.getfolder(WRK.FFLD)
    Set T_FLD = FS.getfolder(WRK.TFLD)
'
    F_FLD.Copy T_FLD, True

End Sub


Say  2003-06-12 00:09:43  No: 78216

速度チェックはしてませんが、

SHFileOperation(API)使ってみるとか、
サブディレクトリがないなら、DOSのCOPYコマンド発行してみるとか、


ゆうたろう  2003-06-12 01:19:43  No: 78217

有難う御座います。Say様
まだVBを始めてから余り経っていないので
SHFileOperation(API)の使い方が解りません、使い方を教えていただけると非常にありがたいのですが。
サブディレクトリは無いのですが、OSがWinXPなのですが、DOSの
COPYコマンド発行出来るのでしょうか?
ついでにDOSのコマンドの発行の仕方も教えていただけると
ありがたいです。


Say  2003-06-12 02:38:56  No: 78218

APIについては自分で調べてみてください。

COPY の使い方は、DOS窓で 
COPY /?
としてみてください。

実際に使う場合、DOS窓で
COPY c:\test1\*.* c:\Test2\

みたいなかんじです。

VBから実行するなら、
COPYはDOSシェル(cmdまたはcommand)の内部コマンドですから、

Shell Environ(comspec) & "/C COPY c:\test1\*.* c:\Test2\"

みたいな感じです。


  2003-06-12 03:33:32  No: 78219

有難う御座いました。Say様
早速試してみようと思います。
APIの方は、本屋にでも行って探して見ます。


Say  2003-06-12 09:51:40  No: 78220

APIの場合、関数名でWeb検索するのが早道ですが・・・。


Loreley  2003-06-12 17:51:36  No: 78221

DOSならXCOPYという手もありますね。
オプションつければサブフォルダもコピーできますから


ゆうたろう  2003-06-12 20:55:50  No: 78222

SHFileOperationをWebで検索して動くようにはなったのですが
ドライブ C:にはコピーできるのですが、ほかのドライブに成ると
指定されたパスが見つかりません。
というメッセージが出てしまうのですが、どうしたら良いのでしょう。
C:の内容をUSB接続のHDに退避しようとしています。
USB接続のHDの内容はエクスプローラでは見れるのですけれど。


ゆうたろう  2003-06-12 21:49:24  No: 78223

上記の質問は原因が解りましたので、忘れてください。


ゆうたろう  2003-06-13 20:50:59  No: 78224

SHFileOperationを使用してコピー処理を作り直しました。
コピー時間がめちゃくちゃ短時間になりました。
皆様有難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加