![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-18 18:57 |
共 47,814 主题排行 / 349,908 发帖 / 今日 1 篇 / 48,259 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 在DOS下,如何确定硬盘的最后一个分区的盘符;如何判定目 |
| 可打印版本 2,048 / 11 |
| 第1楼 zhamin | 发表于 2006-03-05 23:50 |
| 新手上路 发帖 1 积分 6 | |
|
在DOS下,如何确定硬盘的最后一个分区的盘符;如何判定目 在只有一个光驱的情况下,用FINDCD可以确定光驱的驱动器号,如何根据这个驱动器号来确定硬盘最后一个分区的盘符(不含NTFS分区)。想建目录名时,以及如何判定目录名是否存在?请高手作答。
|
|
| 第2楼 lks205 | 发表于 2006-03-11 11:00 |
| 初级用户 发帖 32 积分 86 | |
|
帮顶 我也想知道答案
|
|
| 第3楼 baomaboy | 发表于 2006-03-11 12:58 |
| 银牌会员 发帖 554 积分 1,513 | |
|
我也想知道
|
|
| 第4楼 chenall | 发表于 2006-03-11 16:28 |
| 银牌会员 发帖 469 积分 1,276 来自 福建泉州 | |
| 第5楼 kpc163 | 发表于 2006-03-11 23:08 |
| 初级用户 发帖 9 积分 22 | |
|
『第 5 楼』:
OK,刚才给FINDCD增加了一个选项/L,用于显示和设置第一个光驱前的盘符给%CDROM%,试试看吧: 打开附件 例如,假设光驱为D: FINDCD /L CDROM=C: 附件下载不了 |
|
| 第6楼 floor | 发表于 2006-03-12 01:21 |
| 初级用户 发帖 82 积分 185 | |
|
使用下面方法
func -a6>list.txt // 将所有分区盘符写入list.txt(不包括光驱) STRINGS a=LINESIZE list.txt //返回文件内容的总行数 STRINGS p=READ list.txt,%a% //读取文件中指定行数的内容 echo %p% //%p%就是最后分区的盘符 |
|
| 第7楼 chenall | 发表于 2006-03-12 12:31 |
| 银牌会员 发帖 469 积分 1,276 来自 福建泉州 | |
|
还有一个方法,可以试试
使用MD if exist在判断最后一个分区的盘符. 可以试试以下方法. |
|
| 第8楼 3742668 | 发表于 2006-03-12 21:09 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
看起来都挺牛b的,咱也来一个:
@echo off cd\ set c=C: set d=D: set e=E: set f=F: set g=G: set h=H: set i=I: set j=J: set k=K: set l=L: set m=M: set n=N: set o=O: set p=P: set q=Q: set r=R: set s=S: set t=T: set u=U: set v=V: set w=W: set x=X: set y=Y: set z=Z: %c% %d% %E% %f% %g% %h% %i% %j% %k% %l% %m% %n% %o% %p% %q% %r% %s% %t% %u% %v% %w% %x% %y% %z% if "%cd%" == "%d%\" %c% if "%cd%" == "%e%\" %d% if "%cd%" == "%f%\" %e% if "%cd%" == "%g%\" %f% if "%cd%" == "%h%\" %g% if "%cd%" == "%i%\" %h% if "%cd%" == "%j%\" %i% if "%cd%" == "%k%\" %j% if "%cd%" == "%l%\" %k% if "%cd%" == "%m%\" %l% if "%cd%" == "%n%\" %m% if "%cd%" == "%o%\" %n% if "%cd%" == "%p%\" %o% if "%cd%" == "%q%\" %p% if "%cd%" == "%r%\" %q% if "%cd%" == "%s%\" %r% if "%cd%" == "%t%\" %s% if "%cd%" == "%u%\" %t% if "%cd%" == "%v%\" %u% if "%cd%" == "%w%\" %v% if "%cd%" == "%x%\" %w% if "%cd%" == "%y%\" %x% if "%cd%" == "%z%\" %y% 在命令行中测试通过,假设光驱内有盘,且可以在命令行中访问。 之所以写这么长是为了方便在DOS下执行,不知道DOS下有没有%cd%这个环境变量,无聊的朋友帮忙在DOS下测试下看看,注意语句中的大小写。 [ Last edited by 3742668 on 2006-3-12 at 22:49 ] |
|
| 第9楼 Climbing | 发表于 2006-03-13 00:31 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
如果系统启动时设置了内存虚拟盘,那么以上所有的程序都会失效。
|
|
| 第10楼 lks205 | 发表于 2006-03-13 13:46 |
| 初级用户 发帖 32 积分 86 | |
Originally posted by Climbing at 2006-3-13 00:31: 那岂不是一切又都白做了,空欢喜一场! |
|
| 第11楼 3742668 | 发表于 2006-03-13 20:09 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
哈哈,楼上这两位真是搞笑。
如果你能提供一个完美的方案出来我才会觉得你牛b 要不就一边呆着去。 |
|
| 第12楼 floor | 发表于 2006-03-14 02:01 |
| 初级用户 发帖 82 积分 185 | |
Originally posted by Climbing at 2006-3-13 00:31: 设置了虚拟内存盘也没关系,因为strings返回文件总行数总是比实际行数少一行,而用 "strings read file,返回的总行数" 得到的是倒数第二行的内容,正好是这个问题想要的答案。至于为什么用它返回的总行数读的不是最后一行我也没搞清呵呵。 func -a6 输出格式: C D E . . . X :: X为虚拟内存盘符 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |