ある監視フォルダ内で日時が最新のテキストファイルを、別フォルダにコピーするような物を作成しています
現状は監視フォルダ内のファイル一覧を比較して判定しているため、新しいファイルが追加されたときはコピーされるのですが
フォルダ内のファイルを編集して更新をかけ、日時を最新にした状態ではコピーできない状態です
最新ファイルの比較方法を、日時に変更するためにはどのように書き換えればよろしいでしょうか?
コード '監視するフォルダの設定 fol_path = "監視するフォルダ" ' (変更前)フォルダ内のファイル一覧(更新日時付き)の取得 Redim path_list1(0) GetFDate fol_path, path_list1 path_list0 = path_list1 Do WScript.Sleep(1000) ' (変更後)フォルダ内のファイル一覧(更新日時付き)の取得 Redim path_list2(0) GetFDate fol_path, path_list2 ' 変更前後のファイル一覧(更新日時付き)の比較 Redim comp_list(0) FComp path_list0, path_list2, comp_list ' 比較結果表示 For i = 1 To Ubound(comp_list) NewFileCopy Next ' 変更後を変更前として設定 path_list0 = path_list2 Loop 'ファイルコピー------------------------------------------------------- Sub NewFileCopy() Set FS = CreateObject("Scripting.FileSystemObject") backFoLpath = "送るフォルダ先" backFileName = FS.GetFileName(comp_list(i)) If InStr(backFileName,".txt")Then Set objFileSys = CreateObject("Scripting.FileSystemObject") Call objFileSys.CopyFile(comp_list(i) ,backFoLpath & backFileName) End If End Sub ' フォルダ内のファイル一覧(更新日時付き)の取得------------------------ Public Sub GetFDate(ByVal fol_path, ByRef path_list()) Set fso = CreateObject("Scripting.FileSystemObject") For Each f In fso.GetFolder(fol_path).files ReDim Preserve path_list(UBound(path_list) + 1) path_list(UBound(path_list)) = _ f.path & vbTab & fso.GetFile(f.path).DateLastModified Next For Each f In fso.GetFolder(fol_path).SubFolders GetFDate f.path, path_list Next Set fso = Nothing End Sub ' ファイル一覧(更新日時付き)の比較------------------------------------ Public Sub FComp(ByRef ls1(), ByRef ls2(), ByRef comp_list()) p1 = 1 p2 = 1 Do If p1 > Ubound(ls1) And p2 > Ubound(ls2) Then Exit Do End If fd1 = "" fd2 = "" If p1 <= Ubound(ls1) Then fd1 = Split(ls1(p1), vbTab) End If If p2 <= Ubound(ls2) Then fd2 = Split(ls2(p2), vbTab) End If If IsArray(fd1) = True And IsArray(fd2) = True Then fn1 = LCase(fd1(0)) fn2 = LCase(fd2(0)) If fn1 = fn2 Then If fd1(1) = fd2(1) Then ElseIf fd1(1) <> fd2(1) Then ReDim Preserve comp_list(UBound(comp_list) + 1) End If p1 = p1 +1 p2 = p2 +1 ElseIf fn1 < fn2 Then ReDim Preserve comp_list(UBound(comp_list) + 1) p1 = p1 +1 ElseIf fn1 > fn2 Then ReDim Preserve comp_list(UBound(comp_list) + 1) comp_list(UBound(comp_list)) = fd2(0) p2 = p2 +1 End If ElseIf IsArray(fd1) = True And IsArray(fd2) = False Then ReDim Preserve comp_list(UBound(comp_list) + 1) p1 = p1 +1 ElseIf IsArray(fd1) = False And IsArray(fd2) = True Then ReDim Preserve comp_list(UBound(comp_list) + 1) comp_list(UBound(comp_list)) = fd2(0) p2 = p2 +1 Else p1 = p1 +1 p2 = p2 +1 End If Loop End Sub
あなたの回答
tips
プレビュー