こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBScript フォルダ以下からファイルの検索、コピー

VBScriptはまったくの初心者ですので、自分なりに調べてはみたのです
がどうしてもわからなかったため質問しています。
OSはWinXPになります。
VBScriptで特定のフォルダ(C:\AAA\)以下からファイル(*.txt)を検索し
てコピーするプログラムを書きたいです。

C:\AAA\・・・\*.txt

指定したフォルダからファイルを検索をすることはできたのですが、サ
ブフォルダがたくさんある場合のファイル検索ができませんでした。

コピーの仕方は検索したファイルから最新のタイムスタンプのファイル以外を別フォルダにコピーしたいです。

あとわかりやすいVBScriptについて記載されているサイトも教えていただけると助かります。

投稿日時 - 2007-10-14 13:52:39

QNo.3428312

すぐに回答ほしいです

質問者が選んだベストアンサー

フォルダ以下からファイルの検索をするにはサブフォルダについて再帰処理をする方法があります。例えば下のコードのように。

コピーは考慮すべきことが多いと思います。最新のタイムスタンプを知るにはファイル名ごとに(?)記憶する必要があります。また別フォルダは一つのフォルダにするか、コピー元と同じ構造にするか、ファイル名が重複したらどうするか、容量不足になったらどうするか、など。

VBScriptでgoogleすればたくさんサイトが出てきますね。MSのページは基本です。

http://www.microsoft.com/japan/msdn/scripting/
http://www.microsoft.com/japan/technet/scriptcenter/default.mspx

-----
Set FSO = CreateObject("Scripting.FileSystemObject")
ShowSubfolders FSO.GetFolder("C:\AAA")
Sub ShowSubFolders(Folder)
For Each File in Folder.Files 'Foler内のファイルを列挙する
Fname = File.name
If LCase(FSO.GetExtensionName(Fname))="txt" Then '拡張子txtを判定
WScript.Echo Folder & "\" & Fname
End If
Next
For Each Subfolder in Folder.SubFolders 'Foler内のフォルダを列挙する
ShowSubFolders Subfolder '再帰呼び出し
Next
End Sub
-----

投稿日時 - 2007-10-14 17:14:00

お礼

わかりにくい質問に対して、わざわざソースコードまで書いて頂いてありがとうございます。
大変、参考になります。

>コピーは考慮すべきことが多いと思います。最新のタイムスタンプを知るにはファイル名ごとに(?)記憶する必要があります。また別フォルダは一つのフォルダにするか、コピー元と同じ構造にするか、ファイル名が重複したらどうするか、容量不足になったらどうするか、など。

そうですよね。コピーに関してもう少し調べて考えてみたいと思います。
別フォルダに関しては元々あるフォルダの下にコピー元と同じ構造に
しようと思っています。ファイル名の重複、容量不足については考えて
いませんでした。

すいません、もう1つお尋ねしたいことがあるのですが、拡張子txtでは
なくプレフィックスで検索する場合も同じように"txt"のところに
プレフィックス名を指定すればよいのでしょうか?

投稿日時 - 2007-10-14 18:08:07

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ANo.1のお礼の回答です。

>拡張子txtでは
>なくプレフィックスで検索する場合も同じように"txt"のところに
>プレフィックス名を指定すればよいのでしょうか?

ANo.1のコードではFnameにファイル名が求まっていて、文字列を扱う様々な方法で判定できます。ドキュメントをご覧になり、やってみて下さい。

固定のプレフィックスだけでしたらLeft関数を使うとよいでしょう。

If LCase(Left(Fname,3))="goo" Then 'プレフィックスgooを判定

正規表現を使えばもっと柔軟にできます。

投稿日時 - 2007-10-14 23:17:58

お礼

返信遅くなりまして申し訳ございません。
もう少しドキュメントを見ながら調べてやってみたいと思います。
大変、参考になりました。
ありがとうございました。

投稿日時 - 2007-10-16 00:27:04

あなたにオススメの質問