解除微信接收文件只读并持续监听解除只读

查看 125|回复 9
作者:永恒陌   
又让chatgpt优化了一下,这回cpu占用率下去了,到0了,之前我这高达12的占用率
-----------前一阵发现微信接收到的文件默认变成了只读,十分离谱。
让chatgpt给搞一下,下边代码都是chatgpt生成的:
功能是通过注册表获取”Documents“位置,我的电脑是修改过文档位置的。所以获取用户目录的话下边是不存在的,所以通过注册表获取。应该是需要管理员权限。
然后获取wxid开头的所有文件夹中的接收文件的文件夹及其子文件夹。
遍历解除
持续监听,持续监听时发现微信会在文件落地后重命名,所以监听的是文件移动事件,重命名本质上是文件移动。我怕它比微信下手快。所以延迟0.1s修改
想挂后台的就自个搞一下吧。
记得先安装watchdog
over!
----新-----
[Python] 纯文本查看 复制代码import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# 获取用户文档路径
import winreg
# 定义 Documents 文件夹的注册表键路径
documents_folder_key_path = r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
# 打开 Documents 文件夹的注册表键
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, documents_folder_key_path) as key:
    # 读取 Documents 文件夹的值
    user_documents_path, _ = winreg.QueryValueEx(key, "Personal")
user_documents_path = user_documents_path + "\\WeChat Files"
# 输出 Documents 文件夹的位置
print("Documents 文件夹位置:", user_documents_path)
# 获取子文件夹下所有以 "wxid" 开头的文件夹中的 "FileStorage\File" 文件夹
parent_folder = user_documents_path  # 根据需求设置父文件夹路径
target_folders = []
for dirpath, dirnames, filenames in os.walk(parent_folder):
    for dirname in dirnames:
        if dirname.startswith('wxid'):
            target_folder = os.path.join(dirpath, dirname, 'FileStorage\\File')
            if os.path.exists(target_folder):
                target_folders.append(target_folder)
print('目标文件夹列表:', target_folders)
# 解除目标文件夹及其子文件夹下所有文件的只读状态
for target_folder in target_folders:
    for dirpath, dirnames, filenames in os.walk(target_folder):
        for filename in filenames:
            file_path = os.path.join(dirpath, filename)
            os.chmod(file_path, 0o777)  # 解除文件只读状态
            print('解除只读状态:', file_path)
# 监听目标文件夹及其子文件夹下新增文件,并解除只读状态
class FileEventHandler(FileSystemEventHandler):
    def on_moved(self, event):
        if event.is_directory:
            return
        time.sleep(0.1)
        file_path = event.dest_path
        os.chmod(file_path, 0o777)  # 解除新增文件的只读状态
        print('解除新增文件只读状态:', file_path)
event_handler = FileEventHandler()
observer = Observer()
for target_folder in target_folders:
    observer.schedule(event_handler, path=target_folder, recursive=True)
observer.start()
print('开始监听文件夹...')
# 程序保持运行状态,等待事件的发生
try:
    while observer.is_alive():
        observer.join(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()
----旧-----
[Python] 纯文本查看 复制代码import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# 获取用户文档路径
import winreg
# 定义 Documents 文件夹的注册表键路径
documents_folder_key_path = r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
# 打开 Documents 文件夹的注册表键
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, documents_folder_key_path) as key:
    # 读取 Documents 文件夹的值
    user_documents_path, _ = winreg.QueryValueEx(key, "Personal")
user_documents_path = user_documents_path + "\\WeChat Files"
# 输出 Documents 文件夹的位置
print("Documents 文件夹位置:", user_documents_path)
# 获取子文件夹下所有以 "wxid" 开头的文件夹中的 "FileStorage\File" 文件夹
parent_folder = user_documents_path  # 根据需求设置父文件夹路径
target_folders = []
for dirpath, dirnames, filenames in os.walk(parent_folder):
    for dirname in dirnames:
        if dirname.startswith('wxid'):
            target_folder = os.path.join(dirpath, dirname, 'FileStorage\\File')
            if os.path.exists(target_folder):
                target_folders.append(target_folder)
print('目标文件夹列表:', target_folders)
# 解除目标文件夹及其子文件夹下所有文件的只读状态
for target_folder in target_folders:
    for dirpath, dirnames, filenames in os.walk(target_folder):
        for filename in filenames:
            file_path = os.path.join(dirpath, filename)
            os.chmod(file_path, 0o777)  # 解除文件只读状态
            print('解除只读状态:', file_path)
# 监听目标文件夹及其子文件夹下新增文件,并解除只读状态
class FileEventHandler(FileSystemEventHandler):
    def on_moved(self, event):
        if event.is_directory:
            return
        time.sleep(0.1)
        file_path = event.dest_path
        os.chmod(file_path, 0o777)  # 解除新增文件的只读状态
        print('解除新增文件只读状态:', file_path)
event_handler = FileEventHandler()
observer = Observer()
for target_folder in target_folders:
    observer.schedule(event_handler, path=target_folder, recursive=True)
observer.start()
print('开始监听文件夹...')
# 程序保持运行状态,等待事件的发生
try:
    while True:
        pass
except KeyboardInterrupt:
    observer.stop()
observer.join()

文件夹, 文件

摇裤儿   

支持一下
lyie15   

这个烦恼最近也遇上了,一开始还以为是中毒了呢
永恒陌
OP
  


lyie15 发表于 2023-4-25 11:36
这个烦恼最近也遇上了,一开始还以为是中毒了呢

谁说不是呢。这玩意太离谱了。它都存在有半年了应该。才发现不久。
lyie15   

是有两个月了,主要是我发EXCEL表给别人,他们编辑后,只能另存,一开始还说我中毒了
lsjmq   

重点是chatgpt生成的
HZB586   

右键属性取消只读不就好了?
永恒陌
OP
  


HZB586 发表于 2023-4-25 11:52
右键属性取消只读不就好了?

你这么说让我觉得你手机里有某一款开放世界游戏。
Aaron-x   

手工改属性后每次更新好像还会变成只读


image.png (31.07 KB, 下载次数: 0)
下载附件
2023-4-25 12:01 上传

永恒陌
OP
  


Aaron-x 发表于 2023-4-25 12:01
手工改属性后每次更新好像还会变成只读

微信收的新文件都是只读的。所以才会这样。。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部