首页 > 解决方案 > 在 NotePad++ 中从其父目录运行批处理文件

问题描述

我制作了一个批处理文件,用于识别保存在该特定文件夹中的 java 文件并编译它们。但是当我从记事本++运行它时,批处理文件将进入记事本++工作目录,即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>

我应该编辑什么以便我的批处理文件从它所在的同一文件夹运行?假设我的 bat 文件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

标签: batch-filenotepad++

解决方案


<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需要/dafter的目录cd,否则它不会更改目录,因为它位于不同的驱动器上。用双引号括起来可能是个好主意,$(CURRENT_DIRECTORY)因为当前目录的路径可能包含特殊字符,即"D:\dogs & cats". Executor Java.bat显示与使用相同的问题,cd因此它的行为相似。

测试脚本"D:\Projects\Java\Executor Java.bat"是:

@echo cd: "%cd%"

从 Notepad++ 的运行Java Executor菜单运行显示提示窗口:

cd: "D:\Projects\Java"

D:\Projects\Java>

提示已准备好输入,就像cmd /k使用的一样。

在问题帖子的批处理文件中是以下行:

cd %cd%

我希望它不会像%cd%当前目录那样做任何事情。

也许想将目录更改为脚本目录:

cd /d "%~dp0"

Viewfor /?call /?about 修饰符,例如dp.


推荐阅读