- 題名: 条件付きフォルダファイルのコピー方法
- 日時: 2013/10/05 22:56:42
- ID: 31845
- この記事の返信元:
- (なし)
- この記事への返信:
- [31846] Re[1]: 条件付きフォルダファイルのコピー方法2013/10/06 11:21:19
- ツリーを表示
2013/10/06(Sun) 11:21:51 編集(投稿者)
■No31845に返信(素人ですさんの記事)
> ここまでなら何とか自力でできそうなのですが、問題がありまして
> 検索するフォルダにはサブフォルダがありその中に同名のファイルがあるため、
> そのフォルダ名をコピー先に作りその中にコピーしたいと考えております。
> (コピー元と同じ階層にして、その中に条件にあったファイルだけをコピーしたいです)
フォルダーの中のファイルを列挙する(ファイル名を順に挙げていく・見ていく)ことはできるのですよね?
それを応用して、フォルダーを列挙してそのフォルダーの中を調べるように再帰する、
ループするコードを書くことになります。
一例
Sub Main()
EnumerateFiles("f:\tmp") ' 検索対象フォルダーは適当に変えてください
End Sub
Private Sub EnumerateFiles(ByVal targetFolder As String)
Console.WriteLine("探しているフォルダー:" & targetFolder)
Dim files As String() = Directory.GetFiles(targetFolder)
For Each file In files
' ファイルに対する条件チェック
Next
Dim folders As String() = Directory.GetDirectories(targetFolder)
For Each folder In folders
' フォルダーなので再帰する
EnumerateFiles(Path.Combine(targetFolder, folder))
Next
End Sub
または、GetFiles 第 3 引数で SearchOption.AllDirectories を指定することです。
最初のフォルダーとその下のフォルダーの検索結果が混ざっているので、うまく
フォルダーを作るべきかどうか判断できるように作らないといけません。
> またこの作成したソフトを別のパソコン(WindowsXP)で使用したいのですが、
> 非力の為、あまり負荷のかからないようにしたいと考えております。
何に対する負荷でしょうか?
どういった処理を作ろうとも、CPU の負荷よりもディスクアクセスの負荷が高いことは
避けられません。
ファイルの列挙、ディレクトリの列挙、ファイルのコピーと3つを考えると、
そこまで大きくディスクアクセス負荷を減らせないかもなぁと思っています。
> どうかご教授の程、よろしくお願いします。
こちらも読んでみてください。
http://blogs.wankuma.com/jeanne/archive/2005/11/24/19566.aspx
分類:[.NET]
はじめて投稿させていただきます。
VBについては初心者レベルですが、質問させていただきます。
長文&乱文ですがよろしくお願いします。
条件にあったテキストファイルを指定した場所にコピーするという
プログラムを作りたいと考えています(ファイル数は10,000件以上)。
具体的にはフォーム上に検索するフォルダとコピー先のフォルダを
指定するTextBoxとファイルの更新日付の期間を指定するTextBoxを
それぞれ設けて条件を指定後に検索し、条件に合ったファイルだけコピーしようと
考えております。
ここまでなら何とか自力でできそうなのですが、問題がありまして
検索するフォルダにはサブフォルダがありその中に同名のファイルがあるため、
そのフォルダ名をコピー先に作りその中にコピーしたいと考えております。
(コピー元と同じ階層にして、その中に条件にあったファイルだけをコピーしたいです)
またこの作成したソフトを別のパソコン(WindowsXP)で使用したいのですが、
非力の為、あまり負荷のかからないようにしたいと考えております。
どうかご教授の程、よろしくお願いします。