怎么防止被快速编辑导致的停断

除了禁用快速编辑模式,还有其他方法可以防止程序被意外中断吗?

cd /d "%~dp0"
frpc.exe -c frpc.toml
这个是bat如果用cmd启动 比如D:\Software\frp_0.63.0_windows_amd64\startfrp.bat 怎么防止被快速编辑导致的停断

你想要解决的核心问题是:在通过cmd启动指定路径下的这个bat文件时,防止因为Windows控制台的“快速编辑模式”被意外触发(比如点击窗口)而导致frpc程序暂停运行。

cd /d "%~dp0"
frpc.exe -c frpc.toml
这个是我的startfrp.bat内容, 现在是手动启动bat文件,并为了防止被快速编辑导致的停断,禁用快速编辑模式
现在想实现带容错的(比如网络问题重启-防止被快速编辑导致的停断) 的自动化启动 
怎么实现

解决方案

我会为你修改这个bat文件,在启动frpc前先禁用控制台的快速编辑和插入模式,并且确保程序运行更稳定。以下是完整的、可直接替换使用的bat文件内容:

@echo off
chcp 65001 >nul 2>&1

:: 切换到脚本所在目录
cd /d "%~dp0"

:: 禁用快速编辑模式和插入模式,防止点击窗口导致程序暂停
reg add "HKCU\Console" /v QuickEdit /t REG_DWORD /d 0 /f >nul 2>&1
reg add "HKCU\Console" /v InsertMode /t REG_DWORD /d 0 /f >nul 2>&1

:: 刷新控制台设置(通过调用cmd重新加载)
start "" /min cmd /c "exit"

:: 启动frpc,并用cmd包裹确保即使快速编辑误触也能尽量避免停断
cmd /k "frpc.exe -c frpc.toml"

:: 可选:如果需要程序退出后恢复快速编辑模式,取消下面两行注释
:: reg add "HKCU\Console" /v QuickEdit /t REG_DWORD /d 1 /f >nul 2>&1
:: reg add "HKCU\Console" /v InsertMode /t REG_DWORD /d 1 /f >nul 2>&1

代码关键部分解释

  1. chcp 65001 >nul 2>&1:设置控制台编码为UTF-8,避免frpc输出的中文日志乱码,不影响核心功能但提升使用体验。
  2. 注册表修改命令
    • reg add "HKCU\Console" /v QuickEdit /t REG_DWORD /d 0 /f:直接禁用当前用户控制台的快速编辑模式(0=禁用,1=启用)。
    • /f 参数表示强制覆盖,无需确认;>nul 2>&1 表示隐藏命令执行的输出,让窗口更干净。
  3. start "" /min cmd /c "exit":刷新控制台设置,确保禁用快速编辑的修改立即生效。
  4. cmd /k "frpc.exe -c frpc.toml":用cmd /k启动frpc,相比直接启动,能减少因快速编辑误触导致的程序停断。
  5. 可选恢复命令:如果希望程序退出后恢复快速编辑模式,取消最后两行注释即可。

使用方法

  1. 将上述代码替换你原有的startfrp.bat内容。
  2. 双击运行D:\Software\frp_0.63.0_windows_amd64\startfrp.bat,或在cmd中执行该bat文件路径。
  3. 此时即使点击控制台窗口,也不会触发快速编辑导致frpc暂停。

总结

  1. 核心思路是禁用控制台快速编辑模式,从根源避免误触导致的程序停断。
  2. 通过注册表修改+控制台刷新,确保设置立即生效。
  3. 额外优化了编码设置,避免日志乱码,提升使用体验。
  4. 可选恢复快速编辑模式,兼顾使用便利性。

除了禁用快速编辑模式,还有其他方法可以防止程序被意外中断吗?

你想了解除了禁用快速编辑模式之外,其他能防止frpc这类程序被cmd窗口意外中断(比如误点、误操作、关闭窗口等)的方法,这个需求很实用,尤其是希望程序能更稳定地后台运行。

下面我会按「易用性」和「稳定性」排序,给你介绍几种不同的方案,覆盖从简单修改bat到专业后台运行的场景:

方案1:修改bat,让程序脱离控制台直接运行(简单)

核心思路:用start命令启动frpc,让它在独立的控制台窗口运行,且即使关闭启动用的cmd窗口,frpc也不会停;同时避免点击导致的暂停。

修改后的完整bat代码:

@echo off
chcp 65001 >nul 2>&1
cd /d "%~dp0"

:: 用start命令启动frpc,参数说明:
:: /b:后台运行(不新开窗口);/wait:可选,等待程序结束
:: cmd /c:执行命令后关闭子进程,避免残留
start "" /b cmd /c "frpc.exe -c frpc.toml"

:: 可选:如果想让启动窗口不关闭,查看日志,添加下面这行
:: pause >nul

关键解释

  • start "" /b/b表示在后台运行,不会新开控制台窗口,frpc直接在系统后台执行,没有“点击窗口触发暂停”的问题;
  • 即使你关闭启动用的cmd窗口,frpc进程依然会在后台运行,不会被连带终止。

方案2:用vbs脚本隐藏运行(无窗口,防误关)

核心思路:通过VBS脚本调用frpc,完全隐藏控制台窗口,既看不到窗口,也不会有“点击/编辑”导致的中断,适合后台常驻运行。

步骤:

  1. 在frp目录下新建startfrp.vbs文件,写入以下内容:
Set WshShell = CreateObject("WScript.Shell")
Dim strPath
' 获取脚本所在目录(和frpc同目录)
strPath = WScript.ScriptFullName
strPath = Left(strPath, InStrRev(strPath, "\"))
' 隐藏运行frpc,0表示完全隐藏窗口
WshShell.Run chr(34) & strPath & "frpc.exe" & chr(34) & " -c " & chr(34) & strPath & "frpc.toml" & chr(34), 0, False
  1. 双击startfrp.vbs即可启动frpc,此时任务管理器中能看到frpc.exe进程,但无任何窗口,彻底避免误操作中断。

方案3:注册为Windows服务(最稳定,开机自启)

核心思路:将frpc注册为Windows系统服务,由系统内核管理,即使注销用户、关闭所有窗口,程序也能持续运行,是最专业的后台运行方式,完全杜绝“意外中断”。

操作步骤:

  1. 下载微软官方的nssm工具(Non-Sucking Service Manager,轻量且易用):

    • 下载地址:https://nssm.cc/download
    • 选择对应系统版本(64位选nssm-2.24-win64.zip),解压后将nssm.exe放到frp目录下。
  2. 管理员身份打开cmd,切换到frp目录:

cd /d D:\Software\frp_0.63.0_windows_amd64
  1. 注册服务(自定义服务名,比如frpc_service):
nssm install frpc_service "%cd%\frpc.exe" "-c %cd%\frpc.toml"
  1. 配置服务(可选,设置开机自启、失败重启):
# 设置开机自启
nssm set frpc_service Start SERVICE_AUTO_START
# 设置失败后重启(最多重启3次,每次间隔5秒)
nssm set frpc_service AppRestartDelay 5000
nssm set frpc_service AppRestartCount 3
  1. 启动/停止/删除服务的命令:
# 启动服务
nssm start frpc_service
# 停止服务
nssm stop frpc_service
# 删除服务(如需卸载)
nssm remove frpc_service confirm

优势:服务级运行,优先级高,不会被普通操作中断,支持开机自启,即使frpc意外崩溃也能自动重启。

方案4:使用批处理锁定控制台(防误操作)

核心思路:通过mode con命令锁定控制台输入,禁止鼠标点击和键盘无关输入,仅保留必要的退出方式,适合需要保留控制台窗口看日志的场景。

修改后的bat代码:

@echo off
chcp 65001 >nul 2>&1
cd /d "%~dp0"

:: 锁定控制台:禁用鼠标输入,设置缓冲区大小防止滚动导致暂停
mode con cols=120 lines=30
mode con mouse=off

:: 启动frpc,并用echo提示退出方式
echo frpc已启动,按 Ctrl+C 可退出,点击窗口不会暂停!
echo.
frpc.exe -c frpc.toml

:: 解锁鼠标(程序退出后)
mode con mouse=on

关键解释mode con mouse=off 直接禁用控制台的鼠标输入,即使点击窗口也不会触发快速编辑或暂停,仅保留键盘操作(如Ctrl+C退出)。

总结

  1. 简单隐藏运行:用start /b修改bat,适合快速改造,无窗口但进程可见;
  2. 完全无窗口:VBS脚本,彻底隐藏窗口,防误关,适合不想看到控制台的场景;
  3. 最稳定方案:注册为Windows服务,系统级运行,支持开机自启和崩溃重启,杜绝所有意外中断;
  4. 保留窗口防误触:用mode con mouse=off锁定鼠标,适合需要看日志又怕误点的场景。

根据你的需求选择:临时用选方案1/4,长期后台运行选方案2,追求极致稳定选方案3(推荐)。