Notepad++运行VBScript需先确认cscript.exe可用,正确配置NppExec命令为cscript //Nologo "$(FULL_CURRENT_PATH)",输出改用WScript.StdOut.WriteLine,参数通过$(CMDLINE)传递,中文需chcp 65001且脚本保存为ANSI或UTF-8无BOM。

Notepad++ 运行 VBScript 前,先确认 cscript.exe 是否可用
Notepad++ 本身不执行 VBScript,它只是调用系统 cscript.exe。如果命令行里运行 cscript //? 报“不是内部或外部命令”,说明 Windows 脚本主机(WSH)没启用,或者 PATH 没包含 System32 路径。
验证方式:打开 CMD,输入:cscript //?
能打印帮助信息就过关;否则需检查:
- Windows 是否禁用了 WSH(极少见,但组策略可能关闭)
- PATH 是否漏了
%SystemRoot%\System32(通常默认就有,不用手动加) - 是否误装了精简版系统(如某些 Ghost 系统删掉了
cscript.exe)
别指望重装 Notepad++ 解决这个问题——它和 WSH 完全无关。
NppExec 配置 VBScript 运行命令的正确写法
用 NppExec(Plugins → NppExec → Execute)时,最常错的是路径拼接和引号处理。错误示例:cscript "$(CURRENT_DIRECTORY)\$(FILE_NAME)"
看起来合理,但一旦 $(CURRENT_DIRECTORY) 含空格(比如 C:\My Scripts\),CMD 就会把路径截断。
正确写法只有一条:cscript //Nologo "$(FULL_CURRENT_PATH)"
说明:
-
//Nologo屏蔽启动横幅,避免干扰输出 -
"$(FULL_CURRENT_PATH)"自带双引号,覆盖所有路径字符(含空格、括号、中文) - 不用
$(CURRENT_DIRECTORY)+$(FILE_NAME)拼接——它们是分开的宏,中间没斜杠,拼出来就是错路径
保存时名字建议填 Run VBS (cscript),别用中文或特殊符号,避免插件解析异常。
脚本里用 WScript.Echo 却看不到输出?换 StdOut
WScript.Echo 默认弹消息框,而 NppExec 控制台不捕获 GUI 输出。你看到的“一闪而过”其实是窗口闪现又消失,不是没运行。
改用命令行友好输出:
- 确保用
cscript(不是wscript)运行——只有cscript支持StdOut - 脚本中改写输出语句:
WScript.StdOut.WriteLine "Hello"WScript.StdErr.WriteLine "Error here" - 如果仍想用
Echo,加参数//B强制后台模式:cscript //B //Nologo "$(FULL_CURRENT_PATH)"——但这会让所有Echo彻底静默,不推荐
传参、等待、编码问题一并解决
VBScript 支持命令行参数,但 Notepad++ 不直接提供参数输入框。得靠 NppExec 的交互机制:
- 运行命令改成:
cscript //Nologo "$(FULL_CURRENT_PATH)" $(CMDLINE)
然后按F6,弹窗里填arg1 arg2,脚本里用WScript.Arguments(0)获取 - 想让控制台停留看结果?末尾加
& pause:cscript //Nologo "$(FULL_CURRENT_PATH)" $(CMDLINE) & pause - 中文输出乱码?终端编码没切到 UTF-8:
cmd /c chcp 65001 >nul && cscript //Nologo "$(FULL_CURRENT_PATH)"
注意:chcp 65001 只对当前 cmd 实例生效,不能写进系统环境变量里“一劳永逸”——每次运行都得显式切换。
最易被忽略的一点:VBScript 文件本身必须存为 ANSI 或 UTF-8 无 BOM。存成 UTF-8 with BOM 会导致 cscript 读取失败,报错 Invalid character,且错误定位在第一行开头——那其实是 BOM 字节,不是你写的代码。


















