批处理教程:获取批处理文件所在路径

本文中将介绍批处理文件中怎样获取当前批处理的磁盘路径。如:驱动名称、文件全路径等等

在进行java开发时,经常需要使用bat去运行一些jar工具。比较常见的如tomcat、jboss等服务器都是通过bat去调用jar中的MAIN类来进行启动。在调用jar时,我们需要指定classpath等路径信息。下面将介绍怎样获取当前批处理文件的磁盘路径信息。

通常我们首先想到的做法是通过%cd%来获取当前磁盘路径信息,如下:

@echo off
set currentBase=%cd%
echo %currentBase%

如果你的这个bat文件是被其他目录的bat文件进行调用的,此时%cd%获取到的值就不是你想要的值了。假如你有两个bat文件,分别如下C:\a.bat文件,C:\test\b.bat文件调用a.bat文件,文件代码如下:

a.bat文件

@echo off
set currentBase=%cd%
echo currentBase=%currentBase%

b.bat文件

@echo off
call ../a.bat

执行b.bat后输出的地址为 “C:\test”,而不是 “C:\”,因为%cd%获取的是当前运行目录地址。

使用%~dp0解决问题?

可以使用 %~dp0 获取当前bat文件的磁盘绝对路径(不包含文件名称)。修改b.bat文件如下:

@echo off
echo %~dp0

执行该bat文件后,输出的地址为:“C:\test\”

其中:

%0是批处理文件本身的路径,%~dp进行扩展,d向前扩展到驱动器,p往后扩展到路径。因此,%~0为C:\test\b.bat,%~dp0为C:\test\。

常见命令

%i    提取第i个命令选项,i可以取值从1到9 

%~i   提取第几个命令选项,i可以取值从1到9,提取的值不能包含引号

%~0   取文件名(名+扩展名)

%~f0  取全路径

%~d0  取驱动器名

%~p0  只取路径(不包驱动器)

%~n0  只取文件名

%~x0  只取文件扩展名

%~s0  取缩写全路径名

%~a0  取文件属性

%~t0  取文件创建时间

%~z0  取文件大小

以上选项可以组合起来使用。

实例:有个批处理文件 test.bat,代码如下:

@echo off
echo %1
echo %~1

在cmd中输入命令:

C:\> test.bat "test"

输出如下:

"test"

test

锲而舍之,朽木不折;锲而不舍,金石可镂。——《荀子·劝学》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号