0

網絡上有很多關於如何從Notepad Plus Plus(NPP)運行文件的例子。但是他們都未能說明當前的工作目錄是NPP可執行文件的位置,而不是文件的位置。
通常他們去是這樣的:從Notepad Plus Plus和當前目錄運行文件

cmd /K "$(FULL_CURRENT_PATH)" 

考慮以下Python腳本:

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

該文件將在覈電站的文件夾,這是根本不是多數人的期待被創建。大多數人會希望它與Python文件位於同一位置。

你也可以做這樣的事情,和它的作品如預期,但是這限制了你的Python文件只:

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

我不想額外的代碼添加到Python腳本來改變當前工作目錄,通常情況下這是不需要的。

我一直在試圖解決這個問題,並提出以下幾點。該行位於NPP文件夾中的「shortcuts.xml」中。

<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> 

所以你關閉核電站,加入這一行,使用其他編輯器編輯「shortcuts.xml」,然後啓動核電站。 要運行該文件,請使用Ctrl + F5組合鍵。

這適用於Windows 10,但在Windows XP中失敗。

我該如何調整它在Windows XP中的工作?

回答

0

我的猜測是問題是命令中嵌套不正確的引號;我不確定爲什麼它會在後來的Windows上工作,而在XP上失敗。

命令

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

代表

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

即使從語法高亮,你可以看到,報價不引用你的期望。

爲了獲得預期的效果,你可以使用這個命令:

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

我從記事本上運行多個Windows .bat文件++。爲實現項目的這一個在文件C:\Users\AdrianHHH\AppData\Roaming\Notepad++\shortcuts.xml<UserDefinedCommands>部分是:

<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> 

隨着.bat作爲當前的文件,然後我用菜單=>運行 =>CD和運行文件

問題中顯示的命令行似乎有太多符號&quot;。當前目錄包含驅動器說明符,因此CD需要\D選項。

我使用的命令啓動cmd \C ...(而不是問題中的\K),因此命令窗口自動關閉。我的.bat文件通常以choice /t 60 /C Y /d Y /n完成,所以我可以看到命令的輸出。

+0

你的命令行的問題是'$(FULL_CURRENT_PATH)'沒有被引用。例如,如果它的值是''c:\ f \ xyz \ w.exe「',那麼沒有引號就會被解釋爲'」c:\ f \ x「」y「」z \ w.exe 「'。不過你說得對,使用'/ d'標誌可能是一個好主意。 – Cauterite

+0

@Cauterite,No.CHDIR(即CD)是一個有趣的命令,它不同地解釋空間。命令「CD /?」的輸出包含*「CHDIR命令不會將空格視爲分隔符,因此可以將CD轉換爲包含空格的子目錄名稱,而不包含名稱帶引號」*「的空格。 – AdrianHHH

+0

'$(FULL_CURRENT_PATH)'不用作'cd'的參數。 'cd'命令在'&&'結束,所以這個「不同的空間解釋」行爲不適用於'&&'之後的命令。 – Cauterite

0

記事本++> F5(運行)>然後鍵入以下命令

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

假定已經設置了路徑,或可以使用C:\ Python27 \ python.exe或者蟒二進制文件的路徑,並您將在python所在的文件夾中運行python。您還可以通過單擊按鈕Save...將此命令保存爲快捷方式。

之後,您還可以在工具欄>運行>修改快捷/刪除命令中修改命令。