- ベストアンサー
VBSで指定した日付のファイルのみを抽出する方法
- VBSを使用して、指定した日付のファイルのみを抽出する方法について教えてください。
- 具体的には、日付を入力するインプットボックスを表示し、入力した日付を含むファイルを指定のフォルダから抽出し、別のフォルダにコピーするプログラムを作成しています。
- 現在のプログラムでは、日付の入力がキャンセルされた場合や不正な入力がされた場合に対応しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
いろいろな分岐点を設けてみました。 検証して、理解しながらお試しください。 Dim hizuke, fs, msg, f Const copyFrom = "D:\" Const copyTo = "D:\test\" Do hizuke = InputBox("日付を入力してください。" & vbCr & vbCr & "例)2000/01/01 → 000101") If hizuke = "" Then Exit Do If Len(hizuke) = 6 Then On Error Resume Next hizuke = CDate("20" & Left(hizuke, 2) & "/" & Mid(hizuke, 3, 2) & "/" & Right(hizuke, 2)) If Err.Number = 0 Then On Error GoTo 0 msg = MsgBox(FormatDateTime(hizuke, 2) & "でよろしいか ", vbYesNoCancel) If msg = 6 Then Set fs = CreateObject("Scripting.FileSystemObject") For Each f In fs.GetFolder(copyFrom).Files If InStr(f.Name, Replace(Right(hizuke, 8), "/", "")) > 0 Then If fs.FileExists(copyTo & f.Name) Then If MsgBox(f.DateLastModified _ & " 更新の「" & f.Path & "」を" & vbCr _ & fs.GetFile(copyTo & f.Name).DateLastModified _ & " 更新の「" & copyTo & f.Name & "」に" & vbCr _ & "上書きしてよろしいか ", vbYesNoCancel) = 6 Then fs.CopyFile f.Path, copyTo End If Else fs.CopyFile f.Path, copyTo End If End If Next Set fs = Nothing Exit Do ElseIf msg = 2 Then Exit Do End If Else On Error GoTo 0 MsgBox "入力した値が不正です。" End If Else MsgBox "入力した値が不正です。" End If Loop
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
>入力した日付をパラメータとして、ファイル検索を行い該当するファイルを抽出する方法 直接そういうことはできないので、フォルダの全ファイルを列挙して、条件に合う物をifで選択してください。 全ファイル列挙は http://msdn.microsoft.com/ja-jp/library/cc427964.aspx あたりを参考にしてください。
お礼
ありがとうございます。Fileコレクションを使用してソースを組んでみます。
お礼
ありがとうございます。行いたいことができました。検証しながら理解を深めさせていただきます。