0

ファイルを反復処理して、今日作成されたすべてのファイルを見つけるには、vbscriptが必要です。

DateDiff("d",RFile.DateLastModified ,Date)=0

今日のフォルダには40個のファイルがあることがわかりますが、スクリプトがすべてのファイルをスキャンすると、40未満のファイルが一覧表示されます。時間の部分も調べている可能性があります。

datediff希望を達成できるように、関数の使い方を正確に教えてもらえますか?

時間部分を考慮せずに、DATE部分が今日の日付部分であるすべてのファイルを取得したいと思います。

4

2 に答える 2

0

VBScript で時刻部分のない datetime 値を作成すると、時刻は自動的に 00:00:00 と見なされます (たとえば、 の戻り値を参照してくださいTimeValue(Date))。このためDateDiff()、ファイルの「最終変更」タイムスタンプを現在の日付 00:00:00 と比較し、差が ±24 時間を超えると 1 より大きい (または -1 より小さい) 値を返します。

2 つのタイムスタンプの日付部分だけを比較するには、次のFormatDateTime()関数を使用します。

today = FormatDateTime(Date, vbShortDate)
If FormatDateTime(RFile.DateLastModified, vbShortDate) = today Then
  '...
End If
于 2012-11-04T21:10:01.990 に答える
0

タイムスタンプを無視して、日付を操作する WMI でファイルを列挙するだけで、月と年の属性を比較するだけのほうがよいでしょう。

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colFiles = _
    objWMIService.ExecQuery("Select * From CIM_DataFile Where Drive = 'E:' and Path = '\\Test\\'")

For Each objFile in colFiles
    dtCreationDate = WMIDateStringToDate(objFile.CreationDate)
    If Day(Now)&Month(Now)&Year(Now) = Day(dtCreationDate)&Month(dtCreationDate)&Year(dtCreationDate) Then
      WScript.Echo objFile.Name
    End If
Next

Function WMIDateStringToDate(sCreatoionDate)
    WMIDateStringToDate = CDate(Mid(sCreatoionDate, 7, 2) & "/" & _
    Mid(sCreatoionDate, 5, 2) & "/" & Left(sCreatoionDate, 4) _
    & " " & Mid (sCreatoionDate, 9, 2) & ":" & _
    Mid(sCreatoionDate, 11, 2) & ":" & Mid(sCreatoionDate, 13, 2))
End Function
于 2012-11-05T19:57:14.157 に答える