Есть ли программа, которая постоянно проверяет определенный размер файла на жестком диске, как каждые 5 минут или что-то?

Если размер файла перестает увеличиваться, я запускаю какое-то действие X (X устанавливается пользователем - например, может запускать приложение или воспроизводить звук).

ОС - Windows 7 Home

Следующий код не работает. Не правильно подбирает размер файла. Когда я щелкаю правой кнопкой мыши по файлу и проверяю его размер, он постоянно обновляется. Однако скрипт AutoIt, похоже, не получает правильный размер каждые 2 минуты. Когда я увеличиваю временной интервал до 5 минут, только тогда он подбирает обновленный размер ИНОГДА.

Global $logging = True
$file = $CmdLine[1] & "\" & $CmdLine[2]
_log("Filename: " & $file)
$size = 0 ;set initial size to 0
Sleep(60000) ;sleep 1 minute
If FileExists($file) Then
    While 1 ;loop indefinitely
        $filesize = FileGetSize($file) ;get current size of file
        _log("File Size: " & $filesize)
        If $filesize = $size Then ;compare new size with old size
            _log("Download Halted: " & $filesize) ;notify that file is complete
            Run("AStart.bat", $CmdLine[1])
            ExitLoop ;exit
        EndIf
        $size = $filesize ;save current file size
        Sleep(120000) ;sleep 2 minutes
    WEnd
Else
    MsgBox(0, "File Not Found", "File Not Found! - " & $file)
EndIf

Func _log($message)     
    If $logging Then ; global variable where you can globally switch OFF/ON logging      
        FileWriteLine(@ScriptDir & "\file.log", @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & ":" & @MIN & " --> " & $message)     
    EndIf 
EndFunc

2 ответа2

1

Вот простой скрипт AutoIt, который будет циклически повторяться каждые 3 минуты и проверять указанный файл на предмет изменения размера файла. Если за эти 3 минуты никаких изменений не произойдет, появится всплывающее окно с сообщением. Я прокомментировал это, чтобы вы могли видеть, что делает каждая строка. Это должно быть легко изменить для ваших нужд наряду с хорошо документированным файлом справки AutoIt и активным форумом помощи.

$file = FileOpenDialog("Select a File", @MyDocumentsDir, "All (*.*)") ;select a file
$size = 0 ;set initial size to 0

While 1 ;loop indefinitely
    $filesize = FileGetSize($file) ;get current size of file
    If $filesize = $size Then ;compare new size with old size
        MsgBox(64, "Download Complete", "File size has not changed in 3 minutes, download complete") ;notify that file is complete
        ExitLoop ;exit
    EndIf
    $size = $filesize ;save current file size
    Sleep(180000) ;sleep 3 minutes
WEnd

Другие функции, которые могут вас заинтересовать: ShellExecute() Run() SoundPlay() TimerInit() TimerDiff() FileExists()

0

Не то, чтобы я знал, но я просто создал то, что может сделать это для вас!

FileWatchAndDoSomething:

Вы запускаете его, выбираете файл для просмотра, выбираете таймер, выбираете условие для просмотра и, наконец, файл для запуска при выполнении условия.

Обратите внимание, что это то, что я только что написал за несколько минут, я проверил это, но никаких гарантий ...

Ссылка для скачивания

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .