中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么通过P来确定最后一个硬盘盘符!!
作者:
标题: 怎么通过P来确定最后一个硬盘盘符!! 上一主题 | 下一主题
yy2372575
初级用户





积分 73
发帖 26
注册 2006-5-3
状态 离线
『楼 主』:  怎么通过P来确定最后一个硬盘盘符!!

我想通过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 ]

2006-12-19 23:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 2 楼』:  

试了几种方法,最后定下了这个方案,它避免了将非硬盘分区(如光驱、优盘等)列出。
@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




三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-20 03:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yy2372575
初级用户





积分 73
发帖 26
注册 2006-5-3
状态 离线
『第 3 楼』:  求救!!

你的代码我试了,XP下可以。在DOS下提示:
SYNTAX  ERROR
求你帮忙编一个DOS下的行吗

2006-12-20 05:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 4 楼』:  

@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
2006-12-20 06:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy2372575
初级用户





积分 73
发帖 26
注册 2006-5-3
状态 离线
『第 5 楼』:  感谢

先谢谢lianjiang2004
但是你的代码中 if exist %%p\bbb\a.exe  set lastdrv=%%p在DOS下不好使,没办法查出,所以每次最后盘符都是c或o

2006-12-20 09:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 6 楼』:  



  Quote:
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
2006-12-20 10:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy2372575
初级用户





积分 73
发帖 26
注册 2006-5-3
状态 离线
『第 7 楼』:  

还是不好使!!不过挺谢谢你的帮忙,而且你的代码是唯一能在DOS下运行的,顺便问一句,为什么FOR在纯DOS命令不好使了?你的为什么行呢?

2006-12-20 20:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 8 楼』:  

不会是在NTFS分区上吧,是的话,DOS是找不到的,需要加载NTFS驱动。
这段代码就是从我的一个批处理里搬过来的,就是用来确定特定文件所在盘符的。
刚才在纯DOS下试了,可以用。

[ Last edited by lianjiang2004 on 2006-12-20 at 10:12 PM ]



Windows 一键还原
http://www.yjhy.com
2006-12-20 21:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy2372575
初级用户





积分 73
发帖 26
注册 2006-5-3
状态 离线
『第 9 楼』:  

不是NT格式,晕!!为什么你能用我不行呢?你是在纯DOS下运行的吗?我是在虚拟机里运行的。我不会那么背吧,你行我不行!!!救命呀!!!我现在要崩溃了!!为什么FOR命令现在在纯DOS下不好使.不会是虚拟机耍我吧

2006-12-21 03:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 10 楼』:  

我是在纯DOS下用的。我先也是在虚拟DOS下用,盘符能找出,但是中间会有一个出错信息,就是假如你有c: d:,会提示E:出错。这时选A即可。于是我就进入纯DOS,无误。



Windows 一键还原
http://www.yjhy.com
2006-12-21 04:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy2372575
初级用户





积分 73
发帖 26
注册 2006-5-3
状态 离线
『第 11 楼』:  

那有可能,我就是有C D,每次都把盘符设成C,我再试试把C D去掉行不

2006-12-21 05:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy2372575
初级用户





积分 73
发帖 26
注册 2006-5-3
状态 离线
『第 12 楼』:  

哈哈,我试过了,好使了。谢谢你几天的大力支持,要不我真不知道能不能坚持下去了!!感谢!!!---__---!!

2006-12-21 05:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: