|
cmd9x
新手上路
积分 8
发帖 3
注册 2007-1-18
状态 离线
|
『楼 主』:
求一个能取当前执行的bat文件所在目录方法。
因为bat文件需要执行一个跟它在一个目录下的某个文件,但是bat文件的位置是不确定的,原来写成这样:
SET CurPath=%0
IF NOT "%CurPath%"=="" set CurPath=%CurPath:~0,-9%
echo %CurPath%
但是有时执行时是对的,有时得到的结果却是错的,要么前后都多一个字符,要不就都少一个字符。
谁能帮帮心,多谢了
|
|
2007-1-18 22:53 |
|
|
redtek
金牌会员
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
2 楼』:
%CD% 这个环境变量内容就是当前所在目录。
例:显示当前目录
@echo off
echo 当前目录是:%cd%
pause
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2007-1-18 23:00 |
|
|
jmz573515
银牌会员
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
|
2007-1-18 23:20 |
|
|
cmd9x
新手上路
积分 8
发帖 3
注册 2007-1-18
状态 离线
|
『第
4 楼』:
这个我知道了,我是想说,如果我是这样执行bat
C:\abc>D:\abc.bat
那么怎么取到"D:\abc"
|
|
2007-1-18 23:58 |
|
|
redtek
金牌会员
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
5 楼』:
@echo off
:: set "abc=%cd%"
echo 当前正在运行的批处理文件所在路径:%~dp0
pause
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2007-1-19 00:23 |
|
|
hxuan999
中级用户
DOS之日
积分 337
发帖 161
注册 2006-11-4
状态 离线
|
『第
6 楼』:
'%~dp0'所得到的路径中最后一个字符总是\,所有用的时候要注意了.比如调用它下面的abc.bat就要写成'%~dp0abc.bat',
另外你并不知道路径中有无空格,所以最好用双引号引起来,或是写成'%~sdp0'用路径的短名形式.
|
for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul |
|
2007-1-19 00:50 |
|
|
cmd9x
新手上路
积分 8
发帖 3
注册 2007-1-18
状态 离线
|
|
2007-1-19 02:06 |
|
|
xuyuansheng
初级用户
积分 20
发帖 8
注册 2007-1-17
状态 离线
|
『第
8 楼』:
但,如果你的这个批处理文件(x.bat)放到一个含有空格的路径中,将什么也得不到。
可以试试:
[curpath.bat]
echo %cd% > curpath.txt
查看curpath.txt就可以了。
|
|
2007-1-20 00:28 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
9 楼』:
>>curpath.txt echo="%cd%"
|
|
2007-1-20 07:21 |
|
|
jmz573515
银牌会员
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『第
10 楼』:
@echo off
setlocal EnableDelayedExpansion
echo 当前正在运行的批处理文件所在路径:!cd!
pause
|
|
2007-3-14 08:22 |
|
|
merryheart0424
初级用户
积分 28
发帖 10
注册 2007-4-25
状态 离线
|
『第
11 楼』:
Quote: | Originally posted by hxuan999 at 2007-1-19 12:50 AM:
'%~dp0'所得到的路径中最后一个字符总是\,所有用的时候要注意了.比如调用它下面的abc.bat就要写成'%~dp0abc.bat',
另外你并不知道路径中有无空格,所以最好用双引号引起来,或是写成'%~sdp0'用路径的短名形式. |
|
请教一下,'%~dp0' '%~sdp0' 具体是什么意思? 怎么我输入试了一下没有显示路径呢?
|
|
2007-5-25 10:47 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
12 楼』:
To merryheart0424:
演示一下:
@echo off
echo 当前的盘符及路径:%~dp0
echo 当前的盘符及路径的短文件名格式:%~sdp0
pause 保存为test.bat文件运行.
[ Last edited by lxmxn on 2007-5-25 at 03:10 PM ]
|
|
2007-5-25 15:09 |
|
|
graper
新手上路
积分 8
发帖 4
注册 2007-3-24
状态 离线
|
『第
13 楼』:
如何只取当前文件的上级目录名称
Quote: | Originally posted by lxmxn at 2007-5-25 03:09 PM:
To merryheart0424:
演示一下:
@echo off
echo 当前的盘符及路径:%~dp0
echo 当前的盘符及路径的短文件名格式:%~sdp0
pause 保存为test.bat文件运行 ... |
|
上面这个直接以BAT方式运行可以工作,但如果用工具编译成EXE文件就不行了,路径会变成系统临时目录的路径:(
别外如果我只想取当前文件的上级目录名称如何写呢?
比如当前文件为C:\AAAA\BBB\TEST.BAT
我只要取得BBB这个目录名称
先谢谢了
|
|
2007-6-28 18:58 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
|
2007-6-28 20:59 |
|
|
byxyk
初级用户
积分 112
发帖 54
注册 2007-6-18
状态 离线
|
『第
15 楼』:
%0这个参数并不是一成不变的。
1.资源管理器中双击执行
2.CMD中全路径运行
3.CMD中当前目录下运行
|
|
2007-6-28 21:15 |
|