HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0205
至急! フォルダの更新日時の比較をして新しい方を特定するには4解決


リンク

2016/2/5(Fri) 16:39:09|NO.74456

こんにちは

二つのフォルダを更新日時から比較して新しい方を特定したいです


C:\Test1 (更新日時:2016年2月5日 15時30分)
C:\Test2(更新日時:2016年2月4日 12時10分)

この場合ですと、C:\Test1が新しいと思います
このように日付&時間から、二つを比較して新しい方を特定するにはどうすればいいのでしょうか?

日付だけなら自分でも出来そうだったのですが、時間も・・・となると難しくてわかりませんでした



この記事に返信する


cats

リンク

2016/2/5(Fri) 17:13:44|NO.74457

既にフォルダの更新日時の取得でFILETIME構造体を取得しているのであれば、CompareFileTimeというAPIがあります。
このAPIは2つのFILETIME構造体を比較してくれます。

#uselib "kernel32.dll" #cfunc CreateFile "CreateFileA" str, int, int, int, int, int, int #func CloseHandle "CloseHandle" int #func GetFileTime "GetFileTime" int, int, int, int #cfunc CompareFileTime "CompareFileTime" int, int dim FILETIME_1, 4 dim FILETIME_2, 4 // 1つ目のファイル hFile = CreateFile("C:\\root", 0x80000000, 0, 0, 3, 33554432) GetFileTime hFile, 0, 0, varptr(FILETIME_1) CloseHandle hFile // 2つ目のファイル hFile = CreateFile("C:\\Windows\\System32", 0x80000000, 0, 0, 3, 33554432) GetFileTime hFile, 0, 0, varptr(FILETIME_2) CloseHandle hFile r = CompareFileTime(varptr(FILETIME_1), varptr(FILETIME_2)) mes r stop
https://msdn.microsoft.com/ja-jp/library/cc429696.aspx



スペース

リンク

2016/2/5(Fri) 17:31:57|NO.74458

時刻をただ並べてどちらが大きいかを判別してはどうですか?
1602051530、1602041210という風に書けば簡単に判別できます。
桁数に上限があるので年度に関しては2000引くなりの工夫が必要ですが。



KA

リンク

2016/2/5(Fri) 18:46:34|NO.74459

たとえば TEST.BAT を作って
DIR /A:D /B /O:D /T:W >> A.TXT
と書き込んで実行後、 A.TXT を読み込めばOK

泥臭い方法だけど、常用ぜず一時的に使いたい場合は十分でしょう。



リンク

2016/2/5(Fri) 18:57:22|NO.74460

こんばんは

皆さん、ありがとうございます!!
こんなにも色々と方法があるんですね

助かりました



ONION software Copyright 1997-2023(c) All rights reserved.