質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

0回答

883閲覧

新規テキストファイルを別ファイルにコピーする方法

ukuu

総合スコア1

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2021/12/16 08:48

ある監視フォルダ内で日時が最新のテキストファイルを、別フォルダにコピーするような物を作成しています
現状は監視フォルダ内のファイル一覧を比較して判定しているため、新しいファイルが追加されたときはコピーされるのですが
フォルダ内のファイルを編集して更新をかけ、日時を最新にした状態ではコピーできない状態です

最新ファイルの比較方法を、日時に変更するためにはどのように書き換えればよろしいでしょうか?

コード '監視するフォルダの設定 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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問