Notepad++中运行含空格路径的Lua脚本需用cmd /c加全引号包裹路径,如cmd /c "lua.exe" "$(FULL_CURRENT_PATH)",且必须使用$(FULL_CURRENT_PATH)变量并确保lua.exe在PATH中或写绝对路径。

Notepad++ 运行 Lua 脚本时路径含空格会报错
直接双击或用 NppExec 执行带空格的路径(比如 C:\My Scripts\test.lua)会失败,错误通常是:'C:\My' is not recognized as an internal or external command。本质是 Windows 命令行把空格当分隔符,把路径截断了。
用引号包裹完整路径并启用 cmd /c 模式
关键不是改 Lua,而是让 NppExec 正确调用命令行。必须显式用双引号包住整个脚本路径,并通过 cmd /c 启动,否则引号可能被忽略或解析错。
- 打开
Plugins → NppExec → Execute... - 输入:
cmd /c "lua.exe" "$(FULL_CURRENT_PATH)"
- 点击
Save...,起个名字如Run Lua (quoted) - 勾选
Place to the Macros submenu和Save all files first
确保 lua.exe 在系统 PATH 或写绝对路径
如果 lua.exe 不在环境变量里,cmd /c 找不到它。这时不能只加引号,还得指定完整路径:
- 查
lua.exe位置,比如C:\Program Files\Lua\5.4\lua.exe - 在
NppExec命令中写成:cmd /c "C:\Program Files\Lua\5.4\lua.exe" "$(FULL_CURRENT_PATH)"
- 注意:路径里的空格仍需被外层双引号包裹,所以整个命令字符串要保持合法 shell 语法
避免用 $(CURRENT_DIRECTORY) 拼接路径
有人尝试 "$(CURRENT_DIRECTORY)\$(FILE_NAME)",这在空格路径下极易出错——NppExec 的变量展开不自动加引号,拼出来仍是无引号的裸路径。
-
$(FULL_CURRENT_PATH)是唯一安全的内置变量,它本身不含额外空格处理逻辑,但你必须用双引号把它包住 - 不要用
cd切换目录再执行,NppExec的cd对后续cmd /c子进程无效 - 如果用批处理封装,也要确保批处理里对
%1使用"%~1"解析,而不是%1
cmd /c "lua.exe" "$(FULL_CURRENT_PATH)",前提是 lua.exe 可达。漏掉任一引号,或误用其他变量,都会在空格路径上当场失效。


















