Como monitoro o tamanho de um arquivo?

0

Existe um programa que verifica constantemente um determinado tamanho de arquivo no disco rígido, como a cada 5 minutos ou algo assim?

Se o tamanho do arquivo parar de aumentar, eu executaria alguma ação X (X definida pelo usuário - como talvez iniciar um aplicativo ou reproduzir um som).

OS - Página inicial do Windows 7

O código a seguir não está funcionando. Não está pegando o tamanho do arquivo corretamente. Quando clico com o botão direito no arquivo e verifico seu tamanho, ele é constantemente atualizado. No entanto, o script AutoIt parece não estar pegando o tamanho correto a cada 2 minutos. Quando eu aumentar o intervalo de tempo para 5 minutos, só então ele pega o tamanho atualizado às vezes.

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
    
por TPR 02.11.2011 / 00:28

2 respostas

1

Aqui está um script AutoIt simples que irá circular a cada 3 minutos e verificar um arquivo especificado para alteração no tamanho do arquivo. Se não houver alteração nesses 3 minutos, ele abrirá uma caixa de mensagem. Eu comentei para que você possa ver o que cada linha faz. Deve ser fácil de modificar para as suas necessidades, juntamente com o arquivo de ajuda bem documentado e o fórum de ajuda ativa do 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

Outras funções em que você pode estar interessado: ShellExecute () Corre() SoundPlay () TimerInit () TimerDiff () FileExists ()

    
por 02.11.2011 / 01:41
0

Não que eu saiba, mas acabei de criar algo que pode fazer isso por você!

FileWatchAndDoSomething:

Vocêoinicia,escolheoarquivoaserassistido,selecionaocronômetro,selecionaacondiçãoaserobservadae,finalmente,oarquivoaserlançadoquandoacondiçãoéatendida.

Porfavor,notequeissoéalgoqueeuacabeideescreverempoucosminutos,eutestei,mas,semgarantias...

Link para download

    
por 02.11.2011 / 01:41