отслеживать время последнего изменения папки с помощью пакетного файла

У меня есть папка на моей рабочей станции, куда файлы добавляются каждую минуту. Я должен время от времени следить за этой папкой, чтобы увидеть, добавляются ли новые файлы. Если в этой папке нет нового файла, скажем, 5 минут, мы выполняем действие.

Можем ли мы использовать пакетный файл для этой цели таким образом, чтобы, если за последние 5 минут не было добавлено нового файла, на экране окна появилось предупреждение/всплывающее окно. Также я новичок в пакетной обработке. Пожалуйста, дайте мне знать шаги


person 2FaceMan    schedule 10.09.2012    source источник


Ответы (1)


Кажется маловероятным, что вы собираетесь выполнить то, что хотите сделать, используя только командный файл.

Однако вы можете сделать это с помощью относительно простого/небольшого сценария VB, который не требует дополнительной установки в системе.

'-------------------------------------------------------------
' Monitors a folder for new files and warns if they 
' are not being created within a certain time period.
'-------------------------------------------------------------
Dim intMinutes:      intMinutes = 5            ' minute threshold for warning of no new files
Dim strDrive:        strDrive = "c:"           ' drive to monitor
Dim strPath:         strPath = "\\temp\\"      ' path to monitor. remember to double slashes

Dim intTimer:        intTimer = "2"
Dim strComputer:     strComputer = "."
Dim objWMIService:   Set objWMIService = GetObject( "winmgmts:" &  "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
Dim strQuery:        strQuery = "Select * From __InstanceOperationEvent" & " Within " & intTimer & " Where Targetinstance Isa 'CIM_DataFile'" & " And TargetInstance.Drive='" & strDrive & "'" & " And TargetInstance.Path='" & strPath & "'"
Dim colEvents:       Set colEvents = objWMIService. ExecNotificationQuery (strQuery)
Dim LastNew:         LastNew = Now
WScript.Echo "Monitoring new file creation... Press [Ctrl]-[C] to exit"
Do
    Set objEvent = colEvents.NextEvent()
    Set objTargetInst = objEvent.TargetInstance
    Select Case objEvent.Path_.Class
        Case "__InstanceCreationEvent"
            LastNew = Now
    End Select
    if DateDiff("n",LastNew,Now) >= intMinutes then 
        ' put whatever actions you want in here... the following two lines are for demo purposes only
        msgbox "The last new file was " & DateDiff("n",LastNew,Now) & " minute ago!",0,"No New Files"
        exit do
    end if
Loop

Выполните это в WScript, чтобы сделать его невидимым, или в CScript, чтобы отобразить окно консоли.

Замените код внутри блока IF, чтобы сделать то, что вам нужно (уведомить вас о проблеме).

person RLH    schedule 14.10.2012