有什么办法监控文件夹内容,有变动就发出提示音?

用坛子里推荐的

目前覆盖游戏存档的时候没有发出提示音的功能
作者貌似很忙没时间改,所以想找个临时解决方案

理论上应该检测md5,但是能检测文件修改时间应该就够了

用火绒自定义规则监控路径下的创建、修改操作
就是火绒的汇报有点烦,一个文件弹一次窗,你可以修改规则让他只监控存档里某个特定文件

1 Like

会autohotkey基础知识的话,可以搜一下 watchfolder这个lib

1 Like

lib 是指软件?

在这句话中,“lib” 是指 “library” 的缩写,意思是一个编程库或工具包。它通常包含一组功能和预定义的代码,可以帮助开发者完成特定任务。在这个上下文中,“watchfolder” 可能是一个 AutoHotkey 脚本库,用于监控文件夹的变化。

3 Likes

如果是文本文件的话直接用git管理吧,写个脚本定时运行git status 来检查是不是有文件被修改了

1 Like

让chatgpt用 PowerShell写代码,不过可能无法发出声音,可以弹窗之类的

1 Like

我给你现写一个

6 Likes

Snipaste_2024-11-29_02-37-07.png

看看效果

下载地址
https://github.com/ltaoo/file-watch/releases/download/0.1.0/file-watch.exe

代码地址

10 Likes

多谢,超好用~

ai问一下就有了

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import winsound

class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print(f'文件被修改: {event.src_path}')
        play_sound()

    def on_created(self, event):
        print(f'文件被创建: {event.src_path}')
        play_sound()

    def on_deleted(self, event):
        print(f'文件被删除: {event.src_path}')
        play_sound()

    def on_moved(self, event):
        print(f'文件被移动: {event.src_path} -> {event.dest_path}')
        play_sound()

def play_sound():
    # 播放系统提示音
    winsound.Beep(1000, 500)  # 频率1000Hz,持续500毫秒

if __name__ == "__main__":
    path = "C:\\path\\to\\your\\folder"  # 修改为你想要监控的文件夹路径
    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    try:
        while True:
            time.sleep(10)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()
1 Like

这么厉害,说写就写,点赞

对于有相同需求的 Linux 用户,可以考虑使用这种方法:

Nodejs 可以使用 fs.watch 来监听软件的变动,就像这样
a.png

捕获事件后可以通过 ffplay 无窗口播放音频文件

完整代码如下

import fs from 'node:fs';
import child_process from 'node:child_process';

fs.watch('/tmp/c/a.txt', a => {
	console.log(`file is changed.now time is  ${new Date()}`)
	child_process.exec('ffplay -nodisp -autoexit /tmp/c/info.mp3', () => {
		console.log('播放完毕')
	})
})

PS: 当前运行的 node 版本是 v23.1.0,没有依赖第三方模块。也可以考虑通过 fyi 软件包来发送 KDE Plasma 的桌面通知

能加一个是由什么进程创建的吗?

谢谢认可

:laughing: 刚注册坛子就看到这个很有意思的需求,而且技术上不难,就手痒实现了下

1 Like

看了下很难实现,基本都是监控进程,可以看到进程做了什么,比如这个软件

设置过滤条件为包含指定文件夹,可以看到它创建了哪些文件

process_screenshot.png

Python的watchdog应该可以很好的实现这个需求

1 Like

https://www.nodesoft.com/foldermonitor

1 Like

這三款軟體可以試試
freefoldermonitor
nirsoft 有出2款 folder_changes_view 以及 file_activity_watch ,有支援哪支程式更動檔案

2 Likes