Board logo

标题: [已结][NT]如何在批处理中得到最后的盘符? [打印本页]

作者: 不得不爱     时间: 2006-5-2 09:10    标题: [已结][NT]如何在批处理中得到最后的盘符?

如题!

[ Last edited by willsort on 2006-5-14 at 17:18 ]
作者: 3742668     时间: 2006-5-4 13:58
什么环境下?
XP环境下可以用for调用logicaldisk get name并连续赋值来得到最后的盘符,而且还可以指定要获得指定类型的盘符,如光驱,移动设备。。
若是DOS环境下面可以考虑用for,或者直接用
d:
e:
.
.
.
z:
就可以到最后的盘符了,不过就是长了点,要写23行,呵呵。
我这没DOS,所以具体代码就不给了。。
作者: zhanganhua998     时间: 2006-5-13 21:03
我很知道“如何在批处理中得到最后的盘符?”的DOS批处理具体代码,不知那位老师能贴出来一下!在下先谢谢了。
作者: zhanganhua998     时间: 2006-5-13 21:03
2楼版主,能否写一下?
作者: namejm     时间: 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 :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 ]
作者: wang6610     时间: 2006-5-14 08:47
@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个盘符........
作者: 不得不爱     时间: 2006-5-14 11:33


  Quote:
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系统当然行,达到要求!
作者: namejm     时间: 2006-5-14 13:47


  Quote:
Originally posted by wang6610 at 2006-5-14 08:47:
它只测到我的倒数第2个盘符........

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

@echo off
for /f %%i in ('"wmic logicaldisk where Description="本地固定磁盘" get DeviceID |find /v "DeviceID""') do set mydrv=%%i
echo %mydrv%
pause
XP下运行,2k下无wmic,把"本地固定磁盘"换成其他类型就可以得到其他类型的最后一个盘符,如:"可移动磁盘","CD-ROM 磁盘"...
作者: zhanganhua998     时间: 2006-5-15 00:18
谢谢5楼与6楼的朋友无私答疑,其实我只想得到硬盘的最后盘符,因为这样我就可以用GHOST做一个系统自动备份,不管在那个机子上都让最后一个硬盘盘符作为最后一个系统备份盘。恢复的时候也比较方便,不需要人为的去做选择。同时也感谢楼主提出了这个问题。我是这个论坛的新成员,本人对批处理很感性趣,我觉得“中国DOS联盟论坛”是一个学习DOS技术很好年地方。其实DOS技术是一个很好的东西,它能帮助我们解决很多问题,而且效率比较高。
    我看了中国DOS联盟论坛的一些帖子,深深感觉到有困难大家互相帮助的气氛,我真的很感动,这在其它论坛上是很少看到。希望中国DOS联盟论坛越办越好,越办越大!我是在无忧论坛上看到此站点的,同时也感谢无忧论坛(无忧论坛也是一个好地方)。
作者: guyouhua     时间: 2006-5-25 08:23    标题: [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格式,可能要找新的办法了!!
作者: Climbing     时间: 2006-5-25 10:10
如果是ntfs格式,可以考虑使用gdisk来判断最后一个分区的编号,然后使用ghost的n:m形式写入分区就行了,如果再加上omnifs的配合就更完美了。
作者: 不得不爱     时间: 2006-5-25 10:55
那怎么用GDISK来得到最后一个分区的编号?