複数のフォルダから指定するファイルをコピー
こんばんは。宜しくお願いします。
◇行いたいこと
複数のフォルダ(例:"D:\AB" "D:\CD" "D:\EF")に格納されているファイルの中から指定した
日付を含んだファイルをコピーし、あるフォルダに張り付けたい。
(指定する日付を含んだファイルがすべてのフォルダに存在するとは限らない)
◇現時点でのソース
※エラー処理の未実装部分については無視していただいてけっこうです。
Dim fs
Dim msg
Dim f
Const copyFrom = "D:\AB"
Const copyTo = "D:\VBS\コピー先\"
Do
'日付入力のインプットボックスを出力
hizuke = InputBox("日付を入力してください。" & vbCr & vbCr & "例)2000-01-01")
'インプットボックスの入力値が空白である
If hizuke = "" Then
'日付入力を促すメッセージ出力
MsgBox "日付を入力してください。"
Exit Do
End If
'インプットボックスの入力値が10文字である
If Len(hizuke) = 10 Then
'エラーが発生しても次の処理をすすめる
On Error Resume Next
'指定した日付の確認ダイアログを表示
msg = MsgBox(hizuke & "でよろしいですか?", vbYesNoCancel)
'日付の確認ダイアログでYesを選択
If msg = vbYes Then
'ファイルオブジェクトを作成
Set fs = CreateObject("Scripting.FileSystemObject")
'コピー元フォルダに存在するファイルを読み込む
For Each f In fs.GetFolder(copyFrom).Files
'指定した日付を含むファイル名を検索
If InStr(f.Name, hizuke) > 0 Then
'未実装 ファイルの上書き処理
fs.CopyFile 'コピー元 コピー先
Exit Do
'未実装 Else Ifの処理
End If
Next
'未実装 Else Ifの処理
End If
'未実装 Else Ifの処理
End If
Loop
以上です。ご教授宜しくお願いします。
お礼
astronaut 殿 早速に返事して頂いてありがとう御座います。 なるほど、lsとawkの組み合わせで、コピーする方法は中々良い考え方ですね。 ありがとうございます。