原理: 使用watchdog库对虚幻引擎打包目录进行文件管理监控,若打包成功则有pak文件被创建,即移动文件到游戏MOD目录并打开游戏,打开游戏使用steam的快速启动命令,否则附带启动参数会报未知参数弹窗需要再次确认点击
效果: 打包后耐心等待,pak包会自动移动到目标目录并打开游戏
使用: pycharm或python程序运行都可,持续运行不要关闭,由于watchdog的原理并非简单轮询,因此消耗系统资源很少
import os
import shutil import time from watchdog.events import FileSystemEventHandler from watchdog.observers import Observer #打包文件所在目录 source_dir = "D:/BlackMythMod/Windows/b1/Content/Paks" #目标目录 des_dir = "E:/SteamLibrary/steamapps/common/BlackMythWukong/b1/Content/Paks/mods" #游戏id,从steam商店的url中获取,这里是黑神话悟空的游戏id game_id = "2358720" #steam.exe的路径 steam_path = "D:/steam/steam.exe" #打包文件的名称 pak_name = "pakchunk233-Windows" def move_file(source_dir, des_dir, pak_name): try: shutil.move(f"{source_dir}/{pak_name}.pak", f"{des_dir}/{pak_name}_p.pak") print("文件移动成功!") except Exception as e: print(e) class MyHandler(FileSystemEventHandler): def on_created(self, event): if not event.is_directory: filename = os.path.basename(event.src_path) # print(filename) if filename == f"{pak_name}.pak": move_file(source_dir, des_dir, pak_name) os.system(f"{steam_path} steam://rungameid/{game_id}") return path = source_dir # 要监视的目录 event_handler = MyHandler() observer = Observer() observer.schedule(event_handler, path, recursive=False) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()