# -*- coding: utf-8 -*- """整理交付目录里的工具脚本(按用户要求)。 放行防火墙_以管理员运行.bat -> fxfhq.bat 工具箱.bat -> 删掉 网络自检.bat -> wlzj.bat 一键修复防火墙.bat -> xffhq.bat 关键改动:**不再依赖系统装的 Python**。 wlzj.bat 调 ykxmz.exe --netcheck(自检逻辑已经打进 EXE) xffhq.bat 纯 netsh,本来就不需要 Python fxfhq.bat 纯 netsh,本来就不需要 Python 网络自检.py 删掉(逻辑已移植到 lanremote/netcheck.py,随 EXE 打包) """ from __future__ import annotations import shutil import sys from pathlib import Path ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote") TOOLS = ROOT / "tools" # ---- wlzj.bat:网络自检,调 EXE,不需要 Python ---- WLZJ = r"""@echo off chcp 936 >nul title LAN Remote - Network Self Check cd /d "%~dp0" rem 找被控端 exe(脚本可能在 exe 同目录,也可能在子目录) set "EXE=%~dp0ykxmz.exe" if not exist "%EXE%" set "EXE=%~dp0..\ykxmz.exe" if not exist "%EXE%" set "EXE=%~dp0ykxmz\ykxmz.exe" if not exist "%EXE%" ( echo. echo 找不到 ykxmz.exe echo 请把这个脚本放在被控端目录里运行。 echo. pause exit /b 1 ) rem 自检逻辑已经打进 EXE,不需要系统装 Python。 rem --netcheck 会自己开一个控制台窗口并监听 90 秒。 start "" "%EXE%" --netcheck 90 exit /b 0 """ # ---- fxfhq.bat:运行时也会由 firewall.py 重新生成一份,这里放一份备用 ---- FXFHQ = r"""@echo off chcp 936 >nul title LAN Remote - Allow Through Firewall echo. echo 这个文件由 ykxmz.exe 自动生成/覆盖。 echo 直接双击它以管理员身份运行即可放行防火墙。 echo. echo 如果内容为空,请先运行一次 ykxmz.exe。 echo. pause """ NEW_FILES = { "wlzj.bat": WLZJ, "fxfhq.bat": FXFHQ, } # 要删掉的 OLD_FILES = [ "工具箱.bat", "网络自检.bat", "网络自检.py", ] def write_crlf(path: Path, text: str) -> None: """bat 必须是 CRLF,裸 LF 会让 cmd 误读。""" path.write_bytes(text.replace("\n", "\r\n").encode("gbk", errors="replace")) def main() -> int: TOOLS.mkdir(parents=True, exist_ok=True) # 1. 一键修复防火墙.bat -> xffhq.bat(内容原样搬,只是改名) old_fix = TOOLS / "一键修复防火墙.bat" new_fix = TOOLS / "xffhq.bat" if old_fix.is_file(): data = old_fix.read_bytes() # 确保是 CRLF data = data.replace(b"\r\n", b"\n").replace(b"\n", b"\r\n") new_fix.write_bytes(data) print(f" 一键修复防火墙.bat -> xffhq.bat({len(data)} 字节)") old_fix.unlink() elif new_fix.is_file(): print(" xffhq.bat 已存在") else: print(" [警告] 找不到 一键修复防火墙.bat") # 2. 新脚本 for name, content in NEW_FILES.items(): path = TOOLS / name write_crlf(path, content) print(f" 已写入 {name}") # 3. 删旧的 for name in OLD_FILES: path = TOOLS / name if path.is_file(): path.unlink() print(f" 已删除 {name}") # 4. 残留的旧名字(放行防火墙_以管理员运行.bat 是运行时生成的) for name in ("放行防火墙_以管理员运行.bat",): path = TOOLS / name if path.is_file(): path.unlink() print(f" 已删除 {name}") print() print(" tools/ 现在的内容:") for item in sorted(TOOLS.iterdir()): print(f" {item.name} ({item.stat().st_size} 字节)") return 0 if __name__ == "__main__": sys.exit(main())