是否有一个程序可以不断检查硬盘上的特定文件大小,比如每 5 分钟一次?
如果文件大小停止增加,我会运行一些操作X(X由用户设置 - 比如启动应用程序或播放声音)。
操作系统 - Windows 7 家庭版
以下代码不起作用。它无法正确获取文件大小。当我右键单击文件并检查其大小时,它会不断更新。但是,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
答案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()
答案2
据我所知没有,但是我刚刚创建了一些可以为您做到这一点的东西!
文件监视并执行某些操作:
启动它,选择要观看的文件,选择计时器,选择要观看的条件,最后选择在满足条件时启动的文件。
请注意,这是我在几分钟内写的东西,我已经测试过了,但是,不能保证......