Running File from Notepad Plus Plus and Current Directory

允我心安 提交于 2019-12-11 04:35:13

问题


There are a number of examples on the web of how to run a file from the Notepad Plus Plus (NPP). But they all fail to account for the fact that the current working directory is the location of the NPP's executable, and not the location of the file.
Usually they go something like this:

cmd /K "$(FULL_CURRENT_PATH)" 

Consider the following Python script:

with open('somefile.txt', 'a') as file:
    file.write('Hello there.\n')

This file will be created in the NPP folder, which is not at all what most people would expect. Most people would want it in the same location as the Python file.

You could also do something like this, and it works as expected, but this limits you to Python files only:

<Command name="Run This Python File" Ctrl="no" Alt="no" Shift="yes" Key="116">cmd /K python &quot;$(FULL_CURRENT_PATH)&quot;</Command>

I would not want to add extra code to the Python script to change the current working directory, as normally this would not be needed.

I have been trying to solve this and came up with the following. This line goes in "shortcuts.xml" in the NPP folder.

<Command name="Run This File" Ctrl="yes" Alt="no" Shift="no" Key="116">cmd /K &quot;cd &quot;$(CURRENT_DIRECTORY)&quot; &amp;&amp; &quot;$(FULL_CURRENT_PATH)&quot;&quot;</Command>

So you shut down the NPP, edit the "shortcuts.xml" by adding this line, using another editor, then launch the NPP. To run the file, use Ctrl+F5 key combination.

This works in Windows 10, but fails in Windows XP.

How can I tweak it to work in Windows XP?


回答1:


My guess would be that the problem is the improperly nested quotes in the command; I'm not sure exactly why it would work on later Windows' while failing on XP.

The command

cmd /K &quot;cd &quot;$(CURRENT_DIRECTORY)&quot; &amp;&amp; &quot;$(FULL_CURRENT_PATH)&quot;&quot;

represents

cmd /K "cd "$(CURRENT_DIRECTORY)" && "$(FULL_CURRENT_PATH)""

Even from the syntax highlighting you can see that the quotes are not quoting what you expect.

To get the desired effect, you can use this command:

cmd /K cd "$(CURRENT_DIRECTORY)" ^&^& "$(FULL_CURRENT_PATH)"
:: XML-ified:
cmd /K cd &quot;$(CURRENT_DIRECTORY)&quot; ^&amp;^&amp; &quot;$(FULL_CURRENT_PATH)&quot;



回答2:


I run several Windows .bat files from Notepad++. To achieve this one of the entries in the <UserDefinedCommands> section of the file C:\Users\AdrianHHH\AppData\Roaming\Notepad++\shortcuts.xml is:

<Command name="CD and run file" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /C &quot;cd /d $(CURRENT_DIRECTORY) &amp;&amp; $(FULL_CURRENT_PATH)&quot;</Command>

With the .bat as the current file I then use menu => Run => CD and run file.

The command line shown in the question appears to have too many &quot; symbols. The current directory includes the drive specifier and so the CD needs the \D option.

The command I use starts cmd \C ... (rather than the \K in the question) so the command window closes automatically. My .bat files normally finish with choice /t 60 /C Y /d Y /n so I can see the command's output.




回答3:


Notepad++ > F5 (Run) > then type following command

cmd /K cd "$(CURRENT_DIRECTORY)" && python "$(FULL_CURRENT_PATH)" 

assuming you have setup the path, or you may use C:\Python27\python.exe or the path of your python binary, and you will run the python at the folder where the python resides in. You can also save this command to shortcut by clicking button Save....

Afterwards, you also can modify the command in toolbar > Run > Modify shortcut/delete command.




回答4:


Try this:

cmd /k cd /d $(CURRENT_DIRECTORY) && python $(FULL_CURRENT_PATH)


来源:https://stackoverflow.com/questions/39192941/running-file-from-notepad-plus-plus-and-current-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!