中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 14:07
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结][NT]如何在批处理中得到最后的盘符?
可打印版本  2,575 / 12
第1楼 不得不爱 发表于 2006-05-02 09:10
超级版主 发帖 2,044 积分 5,310 来自 四川南充
[已结][NT]如何在批处理中得到最后的盘符?
如题!

[ Last edited by willsort on 2006-5-14 at 17:18 ]
第2楼 3742668 发表于 2006-05-04 13:58
荣誉版主 发帖 718 积分 2,013
什么环境下?
XP环境下可以用for调用logicaldisk get name并连续赋值来得到最后的盘符,而且还可以指定要获得指定类型的盘符,如光驱,移动设备。。
若是DOS环境下面可以考虑用for,或者直接用
d:
e:
.
.
.
z:
就可以到最后的盘符了,不过就是长了点,要写23行,呵呵。
我这没DOS,所以具体代码就不给了。。
第3楼 zhanganhua998 发表于 2006-05-13 21:03
新手上路 发帖 3 积分 6
我很知道“如何在批处理中得到最后的盘符?”的DOS批处理具体代码,不知那位老师能贴出来一下!在下先谢谢了。
第4楼 zhanganhua998 发表于 2006-05-13 21:03
新手上路 发帖 3 积分 6
2楼版主,能否写一下?
第5楼 namejm 发表于 2006-05-13 23:30
荣誉版主 发帖 1,737 积分 5,226 来自 成都
这个估计用得着吧?
@echo off
for %%i in (Z Y X W V U T S R Q P L O N M L K J I H G F E D C ) do (
if exist %%i:\nul echo 最后的盘符为 %%i & pause>nul && goto :eof
)
这个批处理会把光驱的盘符也算进去,如果不计光驱盘符,应该修改为
@echo off
for %%i in (Z Y X W V U T S R Q P L O N M L K J I H G F E D C ) do (
if exist %%i:\recycled\nul echo 最后的磁盘分区盘符为 %%i & pause>nul && goto :eof
if exist %%i:\recycler\nul echo 最后的磁盘分区盘符为 %%i & pause>nul && goto :eof
)

XP环境下测试通过,2K系统估计也能行,2003下没用过,纯DOS下更是没用过:)

[ Last edited by namejm on 2006-5-14 at 00:27 ]
第6楼 wang6610 发表于 2006-05-14 08:47
银牌会员 发帖 488 积分 1,246
@echo off
for %%i in (Z Y X W V U T S R Q P L O N M L K J I H G F E D C ) do (
if exist %%i:\nul echo 最后的盘符为 %%i & pause>nul && goto :eof
)
这个批处理会把光驱的盘符也算进去,如果不计光驱盘符,应该修改为
@echo off
for %%i in (Z Y X W V U T S R Q P L O N M L K J I H G F E D C ) do (
if exist %%i:\recycled\nul echo 最后的磁盘分区盘符为 %%i & pause>nul && goto :eof
if exist %%i:\recycler\nul echo 最后的磁盘分区盘符为 %%i & pause>nul && goto :eof
)


它只测到我的倒数第2个盘符........
第7楼 不得不爱 发表于 2006-05-14 11:33
超级版主 发帖 2,044 积分 5,310 来自 四川南充
Originally posted by namejm at 2006-5-13 23:30:
这个估计用得着吧?
@echo off
for %%i in (Z Y X W V U T S R Q P L O N M L K J I H G F E D C ) do (
if exist %%i:\nul echo 最后的盘符为 %%i & pause>nul && goto :eo ...

2K系统当然行,达到要求!
第8楼 namejm 发表于 2006-05-14 13:47
荣誉版主 发帖 1,737 积分 5,226 来自 成都
Originally posted by wang6610 at 2006-5-14 08:47:
它只测到我的倒数第2个盘符........


请问你的盘符组成情况是什么?比如哪几个是磁盘,哪几个是光盘,哪几个是U盘,哪几个是虚拟磁盘......没有在各种条件下测试,很想知道是怎么回事.
是两个程序都这样还是第二个是这样?
第二个程序是根据默认设置中每个磁盘分区都存在一个回收站文件夹来判断磁盘分区是否存在,这个方法存在局限性,比如您删除了回收站文件夹,或者您在光盘根目录下正好创建了这个文件夹等等,都会误判.
希望大家都来完善这个程序,脱离第三方软件的束缚.
第9楼 3742668 发表于 2006-05-14 17:19
荣誉版主 发帖 718 积分 2,013

XP下运行,2k下无wmic,把"本地固定磁盘"换成其他类型就可以得到其他类型的最后一个盘符,如:"可移动磁盘","CD-ROM 磁盘"...
第10楼 zhanganhua998 发表于 2006-05-15 00:18
新手上路 发帖 3 积分 6
谢谢5楼与6楼的朋友无私答疑,其实我只想得到硬盘的最后盘符,因为这样我就可以用GHOST做一个系统自动备份,不管在那个机子上都让最后一个硬盘盘符作为最后一个系统备份盘。恢复的时候也比较方便,不需要人为的去做选择。同时也感谢楼主提出了这个问题。我是这个论坛的新成员,本人对批处理很感性趣,我觉得“中国DOS联盟论坛”是一个学习DOS技术很好年地方。其实DOS技术是一个很好的东西,它能帮助我们解决很多问题,而且效率比较高。
我看了中国DOS联盟论坛的一些帖子,深深感觉到有困难大家互相帮助的气氛,我真的很感动,这在其它论坛上是很少看到。希望中国DOS联盟论坛越办越好,越办越大!我是在无忧论坛上看到此站点的,同时也感谢无忧论坛(无忧论坛也是一个好地方)。
第11楼 guyouhua 发表于 2006-05-25 08:23
初级用户 发帖 21 积分 46 来自 JIANXI
[NT]如何在批处理中得到最后的盘符
@echo off
for %%i in (Z Y X W V U T S R Q P L O N M L K J I H G F E D C ) do (
if exist %%i:\recycled\nul echo 最后的磁盘分区盘符为 %%i & pause>nul && goto :eof
if exist %%i:\recycler\nul echo 最后的磁盘分区盘符为 %%i & pause>nul && goto :eof
纯DOS下,上面的这种办法是基于分区格式为FAT32的,对于NTFS根本无能为了,
而现有很多用户都用了NTFS格式,可能要找新的办法了!!
第12楼 Climbing 发表于 2006-05-25 10:10
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
如果是ntfs格式,可以考虑使用gdisk来判断最后一个分区的编号,然后使用ghost的n:m形式写入分区就行了,如果再加上omnifs的配合就更完美了。
第13楼 不得不爱 发表于 2006-05-25 10:55
超级版主 发帖 2,044 积分 5,310 来自 四川南充
那怎么用GDISK来得到最后一个分区的编号?
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023