You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不关闭Secure CRT程序及会话的前提下退出运行中的VBScript

解决方案

核心修改逻辑

你当前脚本会关闭SecureCRT的核心原因是ThisIsTheEnd子过程中调用了crt.Quit,该方法的作用就是关闭整个SecureCRT程序。只需要修改终止逻辑,即可实现仅停止脚本、保留程序和会话运行的需求。


具体修改步骤

方案1:主动抛错终止脚本(推荐,最简实现)

SecureCRT的VBScript环境中,未捕获的自定义错误只会终止当前运行的脚本,不会对SecureCRT主程序和已连接的会话产生任何影响,完美适配你的需求。
只需要修改ThisIsTheEnd子过程即可:

Sub ThisIsTheEnd
    MsgBox"Thank you, come again"
    ' 删掉原有的crt.Quit语句,新增下面这行
    Err.Raise vbObjectError + 1001, "UserAbort", "脚本主动终止"
End Sub

修改后,你在任意节点调用ThisIsTheEnd都会立刻终止整个脚本的运行,当前会话保持连接,可直接手动输入其他命令。

方案2:全局标志位控制(无错误提示版本)

如果不希望脚本终止时弹出VBS错误提示,可以新增全局标志位,在每个执行节点判断是否需要终止:

  1. 在脚本最开头新增全局变量定义
Dim g_bAbortScript
g_bAbortScript = False
  1. 修改ThisIsTheEnd子过程
Sub ThisIsTheEnd
    MsgBox"Thank you, come again"
    g_bAbortScript = True
    Exit Sub
End Sub
  1. 在每个子过程的每一步执行前、以及全局代码调用子过程后都加标志位判断,比如:
' 全局代码中的判断示例
If Intro =2 Then
    MsgBox"Operation Cancelled"
    ThisIsTheEnd
    If g_bAbortScript Then Exit Sub ' 加这行阻止后续代码执行
End If

' 子过程中的判断示例
Sub Profile
    If g_bAbortScript Then Exit Sub
    ' 原有业务代码
    ' ... 每一段业务逻辑前都加一次标志位判断
End Sub

额外代码优化建议

你当前脚本中ElseIf SELPROFILE<>1 or 2 or 3 Then的判断逻辑存在语法错误,VBS中该写法永远返回True,建议直接改成Else即可,前面已经覆盖了1、2、3的合法取值,剩下的所有输入都是无效值。


内容的提问来源于stack exchange,提问作者dimitris1780

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:24:02