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

时间:2009-07-09 19:40:34

标签: 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"

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

5 个答案:

答案 0 :(得分:21)

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

runscript $(FULL_CURRENT_PATH)

如果你想测试一下,可以在最后放一个& pause,看它是否有用。

您还可以稍微调整一下脚本,以便每个文件都不会测试每个扩展名,方法是使用带有文件扩展名标签的可怕GOTO命令:

@echo off
GOTO %~sx1
:.pl
  perl "%~f1"
  GOTO end
:.rb
  ruby "%~f1"
  GOTO end
:.php
  php "%~f1"
  GOTO end
:end

答案 1 :(得分:6)

在Windows上运行的notepad ++ 6.2版中,只需使用带引号的“$(FULL_CURRENT_PATH)”,即可使用与该文件关联的默认程序打开该文件。因此,请确保“使用记事本++编辑”是默认的双击操作。

答案 2 :(得分:5)

我有问题使它工作,以便在我看看它做了什么时保持shell窗口打开。 在结尾处放置“& pause”似乎没有帮助,直到我在开头添加cmd /c

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

为了在屏幕上保留命令结果,您可以使用/ k开关,如George所建议的: cmd /k c:\php\php.exe -l "$(FULL_CURRENT_PATH)"

这很好用,我用它在Notepad ++中进行快速语法检查。

答案 3 :(得分:1)

您可以使用以下脚本尝试npp_exec:

NPP_SAVE
SET Executer = execute$(EXT_PART)
NPP_EXEC "$(Executer)"

然后使用名为execute.rb的脚本:

perl $(FULL_CURRENT_PATH) //or something like that

此方法描述为here

答案 4 :(得分:1)

有一个名为RunMe的插件可以在默认程序中打开当前文件。它是比“$(FULL_CURRENT_PATH)”命令更好的解决方案,因为它将当前目录更改为文件路径,并且该命令在N ++路径中运行该文件。