notepad++报“不是内部或外部命令”90%是系统path未正确配置且未重启notepad++所致;需在cmd中用where python验证真实路径,运行命令必须用双引号包裹$(full_current_path),并添加python -u或cmd /k & pause防闪退与缓存。

Notepad++ 点“运行”报“不是内部或外部命令”,90% 是系统 PATH 没生效,而不是 Notepad++ 设置错了。 它不读你改完就生效的环境变量,也不继承 CMD 里临时 set 的路径——必须让 Windows 系统级 PATH 正确、且 Notepad++ 重启后加载到这个快照。
cmd 里能跑,Notepad++ 就一定行?不一定
你在 CMD 输入 python --version 成功,不代表 Notepad++ 能调用 python。原因很直接:Notepad++ 启动时只读取一次系统环境变量,之后你改了 PATH,它根本不知道。
- 改完系统 PATH 后,必须彻底关闭所有 Notepad++ 进程(包括托盘图标),再重新打开
- 别信“我刚在 CMD 里 set PATH=...”,那是临时变量,子进程(比如 Notepad++ 启动的 cmd)不会继承
- 用
where python或where gcc确认系统真能找到可执行文件,而不仅是 PATH 字符串里有关键字 - 某些安装器(如 Python、MinGW)勾选了 “Add to PATH”,但实际写入失败——手动检查 PATH 值里是否真出现了对应路径
Run → Run(F5) 里填命令总崩?路径宏和引号是命门
填错一个符号,$(FULL_CURRENT_PATH) 就会变成字面字符串,而不是真实路径;缺引号,含空格的路径直接被截断。
- 必须用双引号包裹:
"$(FULL_CURRENT_PATH)",不能写成$(FULL_CURRENT_PATH)或%FULL_CURRENT_PATH% - Python 推荐写法:
python -u "$(FULL_CURRENT_PATH)",-u防止输出缓存导致 print 不显示 - 如果脚本依赖当前目录下的资源(如 config.json),得先切目录:
cd /d "$(CURRENT_DIRECTORY)" & python -u "$(FULL_CURRENT_PATH)" - 想看错误信息别闪退?结尾加
& pause,但注意cmd /c和cmd /k的区别:/c执行完关窗,/k保留窗口
NppExec 插件中文乱码、找不到 gcc?绕过 PATH 最稳
NppExec 默认用精简环境启动子进程,PATH 经常被砍掉一半。与其反复调试环境变量,不如写死路径——尤其当你装了多个编译器(TDM-GCC、MSYS2、Clang)时。
- 不要写
gcc "$(FULL_CURRENT_PATH)",改用:"C:\MinGW\bin\gcc.exe" "$(FULL_CURRENT_PATH)" -o "$(NAME_PART).exe" - 路径中含空格?整个路径必须用英文双引号包住,比如
"C:\Program Files\mingw64\bin\gcc.exe" - 中文输出乱码?在命令开头加
cmd /c chcp 65001 >nul &&,再接你的主命令,强制切 UTF-8 页码 - 不想改命令?可在 NppExec 脚本第一行手动补 PATH:
set PATH=%PATH%;C:\MinGW\bin,但要确保该路径下真有gcc.exe
最易被忽略的一点:Notepad++ 对路径宏大小写不敏感,但对引号、空格、斜杠方向极其敏感;$(NAME_PART) 不带扩展名,$(FILE_NAME) 带,用错会导致编译生成 .class 或 .exe 失败。别假设它“应该懂”,每个宏都得查文档确认行为。











