■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#24712-0
フォルダ内のファイル(サブフォルダも含む)をコピーする手法
こんにちは

題名のような処理を行いたいと思い、
自分なりに作ってみたのですが、
私の考えが浅はかなのか、一部のPC(
一般的に見てスペックが低いPC)にて、
処理が失敗(?ハングしてしまう)現象を
引き起こしてしまいます。
具体的な処理としては、フロッピー等にある
ファイルをHDD内の指定したフォルダに
コピーするだけの処理です。
エクスプローラ等を使っての作業では、
問題無く実行できるのですが。。。
プログラム的には、ファイルリストボックスや
ディレクトリボックスを使って、再帰的に、
ファイルを検索して、一個々々、FileCopy関数を
使用してコピーしています。

どなたか、処理が軽い(あいまいな表現ですが)、
ステップが少なくて済むような手法をご存知の方、
教えていただけないでしょうか。

よろしくお願いします。
#24714-0
RE#24712:フォルダ内のファイル(サブフォルダも含む)をコピーする手法
> どなたか、処理が軽い(あいまいな表現ですが)、
> ステップが少なくて済むような手法をご存知の方、
> 教えていただけないでしょうか。
DOSのコマンドで・・・とか
「FileSystemObject オブジェクト」
とかも・・・

#24715-0
RE#24712:フォルダ内のファイル(サブフォルダも含む)をコピーする手法
> 私の考えが浅はかなのか、一部のPC(
> 一般的に見てスペックが低いPC)にて、
> 処理が失敗(?ハングしてしまう)現象を
> 引き起こしてしまいます。

処理速度が遅くて止まっているように見えるだけとか?

> どなたか、処理が軽い(あいまいな表現ですが)、
> ステップが少なくて済むような手法をご存知の方、

たとえば、

Call Shell(Environ("COMSPEC") & " /C XCOPY /E 元のパス コピー先のパス")

ではいかがでしょう。
Shell関数を使って、DOSのファイルコピーのコマンドを実行しています。
#24723-0
RE#24715:フォルダ内のファイル(サブフォルダも含む)をコピーする手法
ゆう(U)さん、よねKENさん
回答ありがとうございます。

すいません、肝心なことを、言い忘れてました。
それは、ファイルコピーの進行状況を掴みたい
ということです。

引き続き、よろしくお願いします。
#24737-0
RE#24723:フォルダ内のファイル(サブフォルダも含む)をコピーする手法
> すいません、肝心なことを、言い忘れてました。
> それは、ファイルコピーの進行状況を掴みたい
> ということです。
じゃあ今回の投稿内容の方法で一つずつコピー
してみれば良いんじゃないですか?

その結果を書いて質問が筋でしょう。

XCOPYでは仕様を満たさないのであれば、COPYを
使うとか・・・
※COPYコマンドは想像できるコマンドですよね?
 XCOPYがあるならCOPYがあっても・・・って


まぁ原因を確実につかまないと別の問題が出るかも
知れませんけど・・・

FileCopyが失敗しているとは考えにくいですが、
進行状況を表示している部分が問題の様な気が…
#24788-0
RE#24737:フォルダ内のファイル(サブフォルダも含む)をコピーする手法
ゆう(U)さん
ちょっと返事遅れてすいません。

> じゃあ今回の投稿内容の方法で一つずつコピー
> してみれば良いんじゃないですか?
> 
> その結果を書いて質問が筋でしょう。
> 

おっしゃる通りですが、試す以前に、ご提示いただいた
内容では、今回の追記した部分が解決できないのでは、
と判断ができると思ってしまいましたので、直ぐに
投稿してしまいました。申し訳ありませんでした。

今回の投稿内容の方法とは、
(1). Copy(XCopy) コマンド
(2).FileSystemObject オブジェクト
のことだと思いますが、

(1)では、ファイルコピーの進行状況が掴めないという問題が
あります。Shell関数で実行されたCopyコマンドが完了したか
どうかを、取得する方法はあるのでしょうか?

(2)については、フォルダ単位のみで、ファイル単位でのコピーが
行えないようです。ファイル単位でコピーする方法があるのでしょうか。

> まぁ原因を確実につかまないと別の問題が出るかも
> 知れませんけど・・・
> 
> FileCopyが失敗しているとは考えにくいですが、
> 進行状況を表示している部分が問題の様な気が…

進行状況の表示方法は、フォルダ内のファイル数を
取得して、その値をプログレスバーのMAXとして、
一つファイルコピーが完了したら、値を一ずつ、
増やしているといった単純なものです。
ちょっとここで問題が起きているとは考えずらいですが、
この部分をはずしたもので試せたら試してみます。

この問題が発生するパソコンは、私の物では無いので、
調査が難しいのですが、何か良いお知恵をお持ちの方は、
アドバイスいただけないでしょうか。

よろしくお願いします。
#24789-0
RE#24788:フォルダ内のファイル(サブフォルダも含む)をコピーする手法
> (1)では、ファイルコピーの進行状況が掴めないという問題が
> あります。Shell関数で実行されたCopyコマンドが完了したか
> どうかを、取得する方法はあるのでしょうか?
掲示板の検索フォームで
「Shell」で検索すると見つかるはずです。
※Q&A掲示板

> (2)については、フォルダ単位のみで、ファイル単位でのコピーが
> 行えないようです。ファイル単位でコピーする方法があるのでしょうか。
「CopyFile メソッド」
ってのが直ぐに見つかると思いますが・・・

> 進行状況の表示方法は、フォルダ内のファイル数を
> 取得して、その値をプログレスバーのMAXとして、
> 一つファイルコピーが完了したら、値を一ずつ、
> 増やしているといった単純なものです。
とにかく疑える物は全て疑ってみないと・・・
※最初の方でREのあった実は「遅いだけ」って
 事はないのですよね?

> この問題が発生するパソコンは、私の物では無いので、
> 調査が難しいのですが、何か良いお知恵をお持ちの方は、
> アドバイスいただけないでしょうか。
自分の環境で発生しない問題ってのは厄介ですね。


Windowsのコピーの様な状況表示でもOKなら・・・
API関数ですが「SHFileOperation」で可能です。
※Webで検索するか過去ログ保存庫のログをチェック
 してみてはいかがでしょう
#24792-0
RE#24789:フォルダ内のファイル(サブフォルダも含む)をコピーする手法
> 掲示板の検索フォームで
> 「Shell」で検索すると見つかるはずです。
> ※Q&A掲示板
> 
> 「CopyFile メソッド」
> ってのが直ぐに見つかると思いますが・・・

両方共わかりました、どうもありがとうございます。
私は、どうも調べ方が足りない&下手なようですね。
お手数お掛けしてすいません。
私の環境で試してみましたが、FileCopyステートメントを
使うより、両方共、若干コピーが早くなったような気がします。
問題のパソコンでも試してもらいます。

> とにかく疑える物は全て疑ってみないと・・・

そうですね。今回の問題も私は、ファイルコピーの部分だけが
悪いとは考えていません、一連の流れにおいてなにか問題が
起きているのではないかと考えて、ステップを減らすような
方向に持っていきたいのですが・・・。

> ※最初の方でREのあった実は「遅いだけ」って
>  事はないのですよね?

通常1分程度でコピーできるものに10分以上待っても
応答がなかったようです。

> 自分の環境で発生しない問題ってのは厄介ですね。

そうなんです、自分のパソコンなら、いろいろ試せるの
ですが、下手なことができずに困っています。

> Windowsのコピーの様な状況表示でもOKなら・・・
> API関数ですが「SHFileOperation」で可能です。
> ※Webで検索するか過去ログ保存庫のログをチェック
>  してみてはいかがでしょう

これも試してみようと思います。(フォルダ毎のコピーは、
今回の処理には、使えないような気がしていますが。)
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)