![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-19 06:34 |
共 47,814 主题排行 / 349,908 发帖 / 今日 1 篇 / 48,259 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 请教,纯DOS下如何获取当前盘符? |
| 可打印版本 3,646 / 37 |
| 第16楼 Climbing | 发表于 2007-12-23 21:19 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
Originally posted by qzwqzw at 2007-12-23 13:59: |
|
| 第17楼 qzwqzw | 发表于 2007-12-23 23:00 |
| 银牌会员 发帖 636 积分 2,343 | |
还是要具体情况具体分析 没错这种方法用途有限 config.sys的shell和autoexec.bat的set可能会把%comspec%改得五花八门 我一般也只用在自己的autoexec.bat中 而且通常放在建立内存盘之前 而获取的%sysdrive%也只能用在自己编写的应用批处理中 而为了兼容它人编写的批处理代码 我通常会在autoexec.bat中先检查A盘是否可读 如果不可读则subst a: c:\建立虚拟A盘 以兼容其它一些可能会读A盘的代码 |
|
| 第18楼 chenall | 发表于 2007-12-23 23:48 |
| 银牌会员 发帖 469 积分 1,276 来自 福建泉州 | |
|
我觉得还是通过U盘里面的一个特殊文件来判断比较保险.
因为其它方法,都有N种可能.而用特殊文件,就不会. PS:好久没有看到willsort了.好崇拜willsort.批处理牛.汇编也牛.呵呵 [ Last edited by chenall on 2007-12-23 at 11:52 PM ] |
|
| 第19楼 lianjiang2004 | 发表于 2007-12-24 07:37 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by Climbing at 2007-12-23 21:19: 自己制作的启动盘里使用时没问题的,只要在autoexec的开头就把此参数赋予一个变量即可。 |
|
| 第20楼 qzwqzw | 发表于 2007-12-24 23:53 |
| 银牌会员 发帖 636 积分 2,343 | |
|
文件标记也具有局限性
USB-FDD模式有可能读不到这个标记文件 USB-CD模式则可能在读无盘的真实光驱时卡壳 USB-HDD和USB-ZIP则无法避免这个异常 在只有C盘或A盘时再去判断另外一个盘上的文件 可能会因为设备未准备好而出现异常 |
|
| 第21楼 lianjiang2004 | 发表于 2007-12-25 08:06 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by qzwqzw at 2007-12-24 23:53: 采用特征文件方法的话,我采用的是只判断C:\有无此文件,没有的话,就认为不是usb-hdd方式启动的。硬盘号为1. 接下来准备在此基础上,加上第1硬盘是否只有一个分区的判断。 |
|
| 第22楼 chishingchan | 发表于 2007-12-25 10:50 |
| 银牌会员 发帖 538 积分 1,284 | |
|
lianjiang2004 的文字表达不错,就是不给你结果,让你自己摸索、让你自己解决!
|
|
| 第23楼 logan0279 | 发表于 2007-12-26 10:22 |
| 初级用户 发帖 45 积分 100 | |
Originally posted by chishingchan at 2007-12-22 10:50 PM: 问题就在于dst这里,U盘在不同的机器上识别是不同的,有机器将其识别为硬盘,这样的话,就应是dst=2:1,而有的机器将其识别为软盘,这样就应是dst=1:1,所以需要知道当前盘符是A还是C,然后才能使用相应的参数的呀! |
|
| 第24楼 logan0279 | 发表于 2007-12-26 10:30 |
| 初级用户 发帖 45 积分 100 | |
|
哈哈,看到我的帖子引得这么多讨论,真是高兴啊!可惜我是个菜鸟,好多都看得云里雾里,以后得多多努力了!
|
|
| 第25楼 lianjiang2004 | 发表于 2007-12-26 14:16 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by chishingchan at 2007-12-25 10:50: 包括你提出的问题,不是我不给结果,你的问题一开始我就给出了我用的代码,可惜答非所问。 从那些代码,你也能看出,我并不擅长批处理,无法像高手那样用短短几行解决问题,需要用最笨的办法来实现。 同时,在无法正确把握提问题意图的情况下,你说有必要费很长时间来些可能并非别人需要的具体解决方案吗? 就像你的问题,一直无法理解意图,如何操作?呵呵。 当然并不妨碍我根据自己的理解和经验,提出自己的看法供别人参考。 |
|
| 第26楼 terse | 发表于 2007-12-26 15:16 |
| 银牌会员 发帖 946 积分 2,404 | |
|
我在AUTOEXEC.BAT里这样处理的:
CD>%TEMP%\DRV.TXT strings ud=read %TEMP%\DRV.TXT,1 %ud%就是启动盘符 你可以IF一下 是A就SET DST=1:1 是C就SET DST=2:1 [ Last edited by terse on 2007-12-26 at 03:21 PM ] |
|
| 第27楼 logan0279 | 发表于 2007-12-30 16:46 |
| 初级用户 发帖 45 积分 100 | |
|
今天无事看下DOS之家的优盘启动盘,发现一个似乎更好的方法:
cd\ dir |find "drive C" && goto bootc :boota ...... :bootc ...... 不过这种方法只适用于从优盘直接启动到DOS,并且这段代码最好要在AUTOEXEC.BAT里面 [ Last edited by logan0279 on 2008-1-1 at 12:34 PM ] |
|
| 第28楼 logan0279 | 发表于 2008-01-01 12:37 |
| 初级用户 发帖 45 积分 100 | |
|
受达人 qzwqzw 的启法,结合FOR命令,还有一种方法也可以得知U盘启动盘盘符:
for /f "delims=:\ tokens=1" %%i in ('echo %comspec%') do set sysdrive=%%i: 这段码在CMD环境下测试通过,不晓得在纯DOS下可不可以! |
|
| 第29楼 logan0279 | 发表于 2008-01-01 12:38 |
| 初级用户 发帖 45 积分 100 | |
|
而获取当前盘符则可以用以下这段代码:
for /f "delims=:\ tokens=1" %%i in ('CD') do set subdrive=%%i: |
|
| 第30楼 logan0279 | 发表于 2008-01-01 13:25 |
| 初级用户 发帖 45 积分 100 | |
|
真郁闷死了,在纯DOS下居然不行!哎,可怜我的一腔激情啊!
|
|
| 上一页 1 2 3 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |