Запустите пакетный файл из его родительского каталога в NotePad ++ - PullRequest
0 голосов
/ 17 февраля 2020

Я создал командный файл, который идентифицирует java файлы, хранящиеся в этой конкретной папке, и компилирует их. Но когда я запускал его из notepad ++, пакетный файл собирался в рабочий каталог notepad ++, то есть C:\Program Files\Notepad++, а затем запускался, поэтому я не получал желаемый вывод.

<Command name="Java_Executor" Ctrl="no" Alt="no" Shift="no" Key="0">&quot;D:\Projects\Java\Executor Java.bat&quot;</Command>

Я пытался редактировать его много раз раз, но не получили желаемого результата.

<Command name="second try" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /C &quot;cd /d D:\Projects\Java\ &amp;&amp; D:\Projects\Java\Executor Java.bat&quot;</Command>

Это была моя вторая попытка.

Это третья попытка:

<Command name="Java_Executor" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /k cd $(CURRENT_DIRECTORY) &amp;&amp; &quot;D:\Projects\Java\Executor_Java.bat&quot;</Command>

Что я должен отредактировать так что мой командный файл запускается из той же папки, где он находится? Предполагая, что мой файл летучей мыши D:\Projects\Java\Executor Java.bat с содержанием:

@ECHO OFF
color F0
ECHO                                        WELCOME TO EXECUTOR
ECHO                                                         -Garvit Joshi(garvitjoshi9@gmail.com)
ECHO                                                          USER:%USERNAME%
cd %cd% 
:first
ECHO LOOKING FOR FILES IN:%cd%
color F0
ECHO Name Of Java Executable Files Present In Folder Are:
python Filename_java.py
set /p "input=Enter The File You Want To Execute:"
ECHO ===============================
javac %input%.java
ECHO ===============================
ECHO Name Of Java Executable Class Present In Folder Are:
python Filename_class.py
ECHO ===============================
javac %input%.java
ECHO ===============================
set /p "input=Enter The Class You Want To Run:"
color 0A
ECHO ===============================
ECHO OUTPUT:
ECHO ===============================
java %input%
ECHO ===============================
color 0F
pause
ECHO =======================================================
ECHO *******************************************************
ECHO =======================================================
goto first

1 Ответ

1 голос
/ 18 февраля 2020
<Command name="Java Executor" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /k cd /d &quot;$(CURRENT_DIRECTORY)&quot; &amp;&amp; &quot;D:\Projects\Java\Executor Java.bat&quot;</Command>

Третья попытка, кажется, почти там. Вы изменяете каталог с 'C:/Program Files/Notepad++ на D:\Projects\Java, для которого потребуется /d после cd, иначе он не изменит каталог на другой диск. Вероятно, хорошая идея заключать $(CURRENT_DIRECTORY) в двойные кавычки, поскольку в текущем каталоге могут быть специальные символы с указанием пути, т.е. "D:\dogs & cats". Executor Java.bat отображает те же проблемы с использованием cd, поэтому он будет вести себя аналогично.

Тестовый сценарий "D:\Projects\Java\Executor Java.bat":

@echo cd: "%cd%"

Запуск Java Executor из меню «Выполнить» на дисплеях Notepad ++ окно подсказки с:

cd: "D:\Projects\Java"

D:\Projects\Java>

Приглашение готово для ввода, так как использовалось cmd /k.

В пакетном файле в вопросе находится строка :

cd %cd%

Я ожидаю, что ничего не делать, так как %cd% уже является текущим каталогом.

Возможно, хотите изменить каталог на каталог скрипта:

cd /d "%~dp0"

Просмотр for /? или call /? о модификаторах, таких как dp.

...