0

В Интернете есть несколько примеров запуска файла из Notepad Plus Plus (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 для изменения тока рабочий каталог, как обычно, это не понадобится.

Я пытался решить эту проблему и придумал следующее. Эта строка находится в «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

Я бегу несколько .bat файлов для Windows с Notepad ++. Для достижения этой одной из записей в <UserDefinedCommands> секции файла C:\Users\AdrianHHH\AppData\Roaming\Notepad++\shortcuts.xml является:

<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 как текущий файл, то я использую меню =>Run =>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, № CHDIR (т. Е. CD) - забавная команда, она интерпретирует пространства по-разному. Выход из команды «CD /?» включает * Команда CHDIR не обрабатывает пробелы как разделители, поэтому CD можно записать в имя подкаталога, которое содержит пробел без окружающего имя с кавычками «*. – AdrianHHH

+0

'$ (FULL_CURRENT_PATH)' не используется как параметр для 'cd'. Команда 'cd' заканчивается на' && ', поэтому это" интерпретирует пространства по-разному "поведение не применяется к команде после' && '. – Cauterite

0

Notepad ++> F5 (Run)> введите следующую команду

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

если вы настроили путь, или вы можете использовать C: \ python27 \ python.exe или путь вашего питона двоичном, и вы запустите python в папке, в которой находится python. Вы также можете сохранить эту команду в ярлыке, нажав кнопку Save....

Впоследствии вы также можете изменить команду в панели инструментов> Выполнить> Изменить команду быстрого доступа/удаления.