batch-file - 在 NotePad++ 中从其父目录运行批处理文件
问题描述
我制作了一个批处理文件,用于识别保存在该特定文件夹中的 java 文件并编译它们。但是当我从记事本++运行它时,批处理文件将进入记事本++工作目录,即C:\Program Files\Notepad++
,然后启动,所以我没有得到想要的输出。
<Command name="Java_Executor" Ctrl="no" Alt="no" Shift="no" Key="0">"D:\Projects\Java\Executor Java.bat"</Command>
我尝试多次编辑它,但没有得到想要的输出。
<Command name="second try" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /C "cd /d D:\Projects\Java\ && D:\Projects\Java\Executor Java.bat"</Command>
这是我的第二次尝试。
这是第三次尝试:
<Command name="Java_Executor" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /k cd $(CURRENT_DIRECTORY) && "D:\Projects\Java\Executor_Java.bat"</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
解决方案
<Command name="Java Executor" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /k cd /d "$(CURRENT_DIRECTORY)" && "D:\Projects\Java\Executor Java.bat"</Command>
第三次尝试似乎几乎就在那里。您正在将目录更改'C:/Program Files/Notepad++
为D:\Projects\Java
需要/d
after的目录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
.
推荐阅读
- machine-learning - 自动更改一个模型 在 keras 中更改另一个
- assembly - 在屏幕上显示缓冲输入
- magento2 - 在 Magento 2.3 中覆盖/重写第三方模型不起作用
- amazon-redshift - Redshift 弹性调整大小——降级集群有多难?
- keras - 在这种情况下,哪个模型更好?
- ruby-on-rails - 是否可以/建议在没有 webpack(er) 的情况下运行 Rails 6?
- html - 如何使用 CSS(和 sass)使水平线垂直?
- r - 在 R 中执行分类变量的排列
- angular - Ionic 5、Angular 9 应用程序未在 Prod 构建中加载。但适用于离子发球。控制台没有错误
- r - 在已排序的数据框列表中查找元素的平均位置