如何使Notepad ++基于其名称运行脚本?

Flu*_*ffy 16 cmd notepad++

我想让notepad ++运行"ruby {filename_here}"命令,如果当前文件名以.rb结尾,"perl {filename_here}"则以.pl结尾.我试过使用NppExec插件,但它不能做有条件的东西,所以我写了一个蝙蝠

@echo off

if /i %~sx1 == .pl perl "%~f1"
if /i %~sx1 == .rb ruby "%~f1"
if /i %~sx1 == .php php "%~f1"
Run Code Online (Sandbox Code Playgroud)

现在我可以从命令行使用它,如C:\ Program Files\Notepad ++> runscript"D\pl.pl",它工作正常.现在我如何将Notepad ++中的某些键绑定到"runscript $(FULL_CURRENT_PATH)"?我试过使用Run-> Run菜单(F5),但它似乎不起作用..

akf*_*akf 21

您需要将文件名放在命令的末尾.在运行(F5)对话框中,尝试以下操作:

runscript $(FULL_CURRENT_PATH)
Run Code Online (Sandbox Code Playgroud)

如果你想测试它,你可以把它放在& pause最后,看它是否有效.

您还可以通过使用GOTO带有文件扩展名标签的dreaded 命令来稍微调整脚本,以便每个文件都不会测试每个扩展名:

@echo off
GOTO %~sx1
:.pl
  perl "%~f1"
  GOTO end
:.rb
  ruby "%~f1"
  GOTO end
:.php
  php "%~f1"
  GOTO end
:end
Run Code Online (Sandbox Code Playgroud)

  • 在当前的Notepad ++版本中,`$(FULL_CURRENT_PATH)`已经包含文件名. (11认同)

Edu*_*oço 6

在Windows上运行的notepad ++ 6.2版中,只需使用带引号的"$(FULL_CURRENT_PATH)",因此将使用与该文件关联的默认程序打开该文件.因此,请确保"使用notepad ++编辑" 不是默认的双击操作.


use*_*ser 5

在使它工作时,我遇到了问题,以便在我查看壳窗口时会保持打开状态。在最后添加“&pause”似乎没有帮助,直到我cmd /c在开头添加:

cmd /c c:\php\php.exe -l "$(FULL_CURRENT_PATH)" & pause

为了使命令结果显示在屏幕上,可以使用/ k开关,如乔治建议的那样: cmd /k c:\php\php.exe -l "$(FULL_CURRENT_PATH)"

效果很好,我将其用于Notepad ++中的快速语法检查。

  • 您也可以尝试使用/ k代替/ c,然后摆脱&暂停。/ c在/ k保留的地方终止。 (2认同)