无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4803|回复: 11
打印 上一主题 下一主题

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

[复制链接]
跳转到指定楼层
1#
发表于 2004-8-15 19:08:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在无忧光盘中加入如下一个CHKHD.bat:
@echo off
prompt $p$g
set hd=
:loop
if %CDROM%==%1 goto hd
shift
goto loop
:hd
if %1==d goto error
set hd=%3
:error
goto end
:end
通过chkhd.bat Z Y X W...E来得到一个变量hd,即为最后一个分区盘符(最少要求硬盘有D盘才行)
我是想在无优启动光盘里加入从最后一个硬盘分区里指定的文件夹内找到gho文件并恢复的一个批处理文件。
如果是恢复光盘里的分区很容易,只要指定路径为:%CDROM%就行了,但不同的硬盘分区数量不同,不知道上面的BAT能解决吗?因为我是2003系统,一时不好试验,请高手看看
2#
发表于 2004-8-15 23:04:46 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

你不会用虚拟机来做测试吗!?
回复

使用道具 举报

3#
发表于 2004-8-16 11:12:01 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

在set hd=%3 处应该是set hd=%2吧,即光驱前面一个盘符(当然,你可能考虑了虚拟磁盘的盘符)。
你的批处理从原理上应该是可以的,但在特殊情况下会出问题。
第一,如果用户有两个光驱怎么办?
第二,如果用户的光驱盘符是手工指定的,例如直接指定成了X:,肯定就会出问题。
我觉得通过磁盘的卷标来判断应该更准确一些。或者通过gdisk来判断。
回复

使用道具 举报

4#
发表于 2004-8-16 12:59:50 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

通过Del盘上一个不存在的文件(或甚至COPY等命令),可能能通过ERR号码来判断。
COPY BAT到最后一个(枚举)分区,检查是否存在目标文件……有的话确定并删除产生的文件。
回复

使用道具 举报

5#
发表于 2004-8-16 15:20:37 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

这个批命令办不到的,如果是NTFS格式你一个也不识:)
回复

使用道具 举报

6#
发表于 2004-8-17 09:27:27 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

试一试用gdisk。
回复

使用道具 举报

7#
发表于 2004-8-17 11:58:37 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

找不到隐含分区吧
有没有更好的方法自动定位最后一个分区
回复

使用道具 举报

8#
发表于 2004-8-17 12:05:14 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

shift 是什么?
回复

使用道具 举报

9#
 楼主| 发表于 2004-9-5 12:00:07 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

虚拟机太麻烦,后来我用试了下,失败,请问怎么用GDISK来判断?
回复

使用道具 举报

10#
发表于 2004-9-5 12:24:47 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

呵呵,看来又是想弄一键恢复的了……
回复

使用道具 举报

11#
 楼主| 发表于 2004-9-8 15:22:43 | 只看该作者

高手看看,我的BAT文件能找到最后一个硬盘分区吗?

恩,是的啊,高人能指教吗?
回复

使用道具 举报

12#
发表于 2009-9-16 23:38:18 | 只看该作者
@echo off
for /f "tokens=2" %%i in ('echo list disk^|diskpart') do set hd=%%i

(echo select disk=%hd%
echo list partition)>script.txt
for /f "tokens=2" %%a in ('diskpart /s script.txt') do set n=%%a

(echo select disk=%hd%
echo select partition %n%
echo detail partition
echo exit)>script.txt
for /f "tokens=4" %%a in ('diskpart /s script.txt') do set last=%%a
del script.txt
set/a hdd=%hd%+1
set/a partn=%n%-1
echo 你的机器中存在硬盘数为:%hdd%
echo 最后一块硬盘的分区数为:%partn% ,其中最后一个分区盘符为:%last%
这个是我在网上找到的,有扩展分区的情况下显示是正常的,但是都是主分区就错误了,但盘符显示还是正常的,盘符错乱的情况下也会正确的找出最后一个分区
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-2 21:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表