中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-02 21:15
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么通过P来确定最后一个硬盘盘符!! 查看 996 回复 11
楼 主 怎么通过P来确定最后一个硬盘盘符!! 发表于 2006-12-19 23:42 ·  中国 吉林 通化 联通
初级用户
积分 73
发帖 26
注册 2006-05-03 08:32
20年会员
UID 54858
状态 离线
我想通过P来确定最后一个硬盘盘符,怎么办呢?举例说:
我有一个程序啊a.exe存在硬盘最后一个区里,因为硬盘分区不同,可能是C,D,E也可能是C,D,E,F。但a.exe存在最后一个盘符里我想在DOS下用批来确定最后一个盘符并执行他,怎么办呢?

[ Last edited by namejm on 2006-12-19 at 05:13 PM ]
2 发表于 2006-12-20 03:01 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
试了几种方法,最后定下了这个方案,它避免了将非硬盘分区(如光驱、优盘等)列出。
@echo off
setlocal&set a=
for /d %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do fsutil fsinfo drivetype %%i:>>1.txt
for /f "tokens=1,2* delims= " %%i in ('findstr /c:"固定" 1.txt') do set a=%%i
echo. 最后一个硬盘分区为 %a%
pause>nul
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
3 求救!! 发表于 2006-12-20 05:56 ·  中国 吉林 通化 联通
初级用户
积分 73
发帖 26
注册 2006-05-03 08:32
20年会员
UID 54858
状态 离线
你的代码我试了,XP下可以。在DOS下提示:
SYNTAX ERROR
求你帮忙编一个DOS下的行吗
4 发表于 2006-12-20 06:51 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
@echo off
rem 知道a.exe所在目录的话,也许可以这样。假定在bbb目录下。
set lastdrv=0
for %%p in (c: d: e: f: g: h: i: j: k: l: m: n: o:) do if exist %%p\bbb\a.exe set lastdrv=%%p
echo.
echo last drive is %lastdrv%
pause>nul
:exit

[ Last edited by lianjiang2004 on 2006-12-20 at 10:26 AM ]
Windows 一键还原
http://www.yjhy.com
5 感谢 发表于 2006-12-20 09:05 ·  中国 吉林 通化 联通
初级用户
积分 73
发帖 26
注册 2006-05-03 08:32
20年会员
UID 54858
状态 离线
先谢谢lianjiang2004
但是你的代码中 if exist %%p\bbb\a.exe set lastdrv=%%p在DOS下不好使,没办法查出,所以每次最后盘符都是c或o
6 发表于 2006-12-20 10:25 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
Originally posted by yy2372575 at 2006-12-20 09:05:
先谢谢lianjiang2004
但是你的代码中 if exist %%p\bbb\a.exe set lastdrv=%%p在DOS下不好使,没办法查出,所以每次最后盘符都是c或o

应该不会吧?要不在for上一句加上 set lastdrv=0看看?
Windows 一键还原
http://www.yjhy.com
7 发表于 2006-12-20 20:37 ·  中国 吉林 通化 联通
初级用户
积分 73
发帖 26
注册 2006-05-03 08:32
20年会员
UID 54858
状态 离线
还是不好使!!不过挺谢谢你的帮忙,而且你的代码是唯一能在DOS下运行的,顺便问一句,为什么FOR在纯DOS命令不好使了?你的为什么行呢?
8 发表于 2006-12-20 21:24 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
不会是在NTFS分区上吧,是的话,DOS是找不到的,需要加载NTFS驱动。
这段代码就是从我的一个批处理里搬过来的,就是用来确定特定文件所在盘符的。
刚才在纯DOS下试了,可以用。

[ Last edited by lianjiang2004 on 2006-12-20 at 10:12 PM ]
Windows 一键还原
http://www.yjhy.com
9 发表于 2006-12-21 03:11 ·  中国 吉林 通化 联通
初级用户
积分 73
发帖 26
注册 2006-05-03 08:32
20年会员
UID 54858
状态 离线
不是NT格式,晕!!为什么你能用我不行呢?你是在纯DOS下运行的吗?我是在虚拟机里运行的。我不会那么背吧,你行我不行!!!救命呀!!!我现在要崩溃了!!为什么FOR命令现在在纯DOS下不好使.不会是虚拟机耍我吧
10 发表于 2006-12-21 04:05 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
我是在纯DOS下用的。我先也是在虚拟DOS下用,盘符能找出,但是中间会有一个出错信息,就是假如你有c: d:,会提示E:出错。这时选A即可。于是我就进入纯DOS,无误。
Windows 一键还原
http://www.yjhy.com
11 发表于 2006-12-21 05:21 ·  中国 吉林 通化 梅河口市 联通
初级用户
积分 73
发帖 26
注册 2006-05-03 08:32
20年会员
UID 54858
状态 离线
那有可能,我就是有C D,每次都把盘符设成C,我再试试把C D去掉行不
12 发表于 2006-12-21 05:37 ·  中国 吉林 通化 梅河口市 联通
初级用户
积分 73
发帖 26
注册 2006-05-03 08:32
20年会员
UID 54858
状态 离线
哈哈,我试过了,好使了。谢谢你几天的大力支持,要不我真不知道能不能坚持下去了!!感谢!!!---__---!!
论坛跳转: