¿Cómo controlo el tamaño de un archivo?

0

¿Hay algún programa que compruebe constantemente un determinado tamaño de archivo en el disco duro, como cada 5 minutos o algo?

Si el tamaño del archivo deja de aumentar, ejecutaría alguna acción X (X establecida por el usuario, como por ejemplo, iniciar una aplicación o reproducir un sonido).

OS - Inicio de Windows 7

El siguiente código no funciona. No está recogiendo el tamaño del archivo correctamente. Cuando hago clic derecho en el archivo y verifico su tamaño, se actualiza constantemente. Sin embargo, la secuencia de comandos de AutoIt no parece estar tomando el tamaño correcto cada 2 minutos. Cuando aumente el intervalo de tiempo a 5 minutos, solo entonces recupera el tamaño actualizado ALGUNAS VECES.

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
TPR
fuente
¿Qué sistema operativo? El método sería muy difícil dependiendo del sistema.
billc.cn
2
Sería mejor que describiera el problema que está teniendo; puede haber mejores maneras de resolverlo que monitoreando el archivo de salida.
Paul
¿Qué sistema operativo usas? Con sistemas similares a UNIX, puede ejecutar un trabajo cron (script de shell) cada 5 minutos que hace lo que quiere.
ott--
No conozco ninguna, pero esto es algo que podría manejarse fácilmente con un pequeño script. Por ejemplo, si está usando Windows, AutoIt tiene algunas funciones buenas para este tipo de cosas (FileOpenDialog, FileGetSize, SoundPlay, ShellExecute). Úsalos con un simple bucle y tendrás exactamente lo que quieres.
MaQleod
@Paul pregunté aquí, pero nadie respondió, así que pensé que mi pregunta era inapropiada superuser.com/questions/352675/…
TPR

Respuestas:

1

Aquí hay un sencillo script de AutoIt que recorrerá un ciclo cada 3 minutos y revisará un archivo específico en busca de cambios en el tamaño del archivo. Si no hay cambios en esos 3 minutos, aparecerá un cuadro de mensaje. Lo comenté para que puedas ver lo que hace cada línea. Debería ser fácil de modificar para sus necesidades junto con el archivo de ayuda bien documentado de Autoit y el foro de ayuda activo.

$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

Otras funciones que te pueden interesar: ShellExecute () Correr() Reproducción de sonido () TimerInit () TimerDiff () El archivo existe()

MaQleod
fuente
¿Alguna idea de por qué FileGetSize no está funcionando? Ver mi post ¿Es un problema conocido?
TPR
0

No que yo sepa, pero, ¡acabo de crear algo que puede hacer esto por ti!

FileWatchAndDoSomething:

enter image description here

Usted lo inicia, elige el archivo que desea ver, selecciona el temporizador, selecciona la condición que desea buscar y, finalmente, el archivo que se inicia cuando se cumple la condición.

Tenga en cuenta que esto es algo que acabo de escribir en unos minutos, lo he probado, pero no tengo garantías ...

Enlace de descarga

William Hilsum
fuente
Sé que dijiste reproducir un sonido u otra acción. Nunca me he metido con Audio y probablemente lo haría ... Puedes configurar fácilmente un archivo por lotes o similar con esta aplicación, así que siempre puedes reproducir un sonido Eso y una aplicación de terceros o similar.
William Hilsum
¡No me funcionó! Aprecio el esfuerzo. ¿En qué sistema operativo lo probaste?
TPR
@progtick Windows 7: ¿cuál es el problema que tiene?
William Hilsum
No lanza el archivo. Probé ambas opciones "Cambios" y "No cambiar"
TPR
@progtick ... ¿Supongo que no te importaría probarlo de nuevo? Simplemente uso el comando Shell, parece que funciona aquí, así que, ¡me preocupa un poco que no funcione en otra parte! ¿Puedes poner el temporizador a 1, luego cree un archivo de texto en su escritorio con texto basura en él, elija ese archivo con c: \ windows \ system32 \ calc.exe como archivo de inicio ... luego haga clic en iniciar (una vez) ... e intente cambiar el texto ¿expediente? ... Si no puedes hacer que eso funcione, veré si hay algo que pueda hacer rápido, pero no puedo ver el error aquí :(
William Hilsum