好文档 - 专业文书写作范文服务资料分享网站

DOS下实现硬盘自动无损数据重新分区的方法

天下 分享 时间: 加入收藏 我要投稿 点赞

DOS下实现硬盘自动无损数据重新分区的方法

================ 一、问题的提出 ================

说起给硬盘分区,有经验的用户都不会陌生,而且是属于计算机系统安装和维护中经常做的一种操作。当然,分区软件有很多,经典的FDISK,权威的PQ PartitionMagic(也就是大名鼎鼎的“分区魔术师”了,下面简称PM) 或者Acronis PartitionExpert(分区软件的新秀),还有命令行下的Gdisk,当然,还有Diskman、FBDisk等很多软件,个人经常使用的是PQ Partition Magic、BootStar,当然也经常使用Fdisk做一些辅助性的操作。DOS方式下人工交互式的分区个人认为还是PM最好用,如果要自动进行分区,对于全新的硬盘来说,当然用Gdisk是一个不错的选择。但如果我想在DOS下使用命令行实现类似PM的无损数据分区该如何办呢?例如,我想实现自动安装IBM一键恢复,这个方案要解决的第一个问题就是如何实现自动无损数据分区(在硬盘的末尾自动建立一个指定大小的主分区并设置合适的卷标)。

================== 二、问题解决过程 ==================

要解决前面提出的问题,首选当然就是考虑PM是否有这个功能了,如果PM能够支持在命令行运行一个类似批处理的自动分区脚本文件,这个问题就可以解决了。我日常使用的是从网上下载的PM 8.0纯DOS版,在DOS方式下输入: pqmagic /?

还真有不少参数,但仔细一看,没有一个参数能够完成前面所述功能。看来PM不成,于是用google在网上搜索,搜索到最多的结果就是gdisk,但可惜它只能在硬盘上有未分区空间的前提下才可以使用,找不到软件怎么办?灵机一动,访问PowerQuest的官方网站,在该网站首页看到的第一个消息就是PowerQuest公司被Symantec公司收购了,网页上方打上了大大的Symantec的字样标志,好在网站还在正常运行,正常的技术支持页面也可以使用,于是试着搜索\或者\之类的关键字,果然在知识库中找到了有关运行Script时出现的错误及解决办法等,后来发现这些错误只是针对Partition Magic Pro(下面简称为PM Pro) 或者Volume Manager这样的软件,Volume Manager不用考虑了,那是Server系统使用的分区软件,于是打开PM Pro的介绍页面(点击访问),发现官方网站上Pro版本的PM最新版本是7.0,在其功能介绍中的“EXCEPTIONAL EASE OF USE” 中发现这一段介绍“ Scripting - Change the partitions on a computer by running a script that you create with ScriptBuilder. To run a script, simply pass the script filename to the program on the command line. ”,好了,这就是我们要找的东西了,原来普通的PM并不支持脚本操作,只有Pro版本才支持,于是又到网上搜索并向各个论坛求助,终于在“中国DOS联盟之联合DOS论坛(点击访问)”的walu站友那里取得了PM Pro 7.0的纯DOS版本(稍后会提供软件的下载),也巧了,这个问题的缘起也是因为该论坛里mewf网友的一个求助帖子:“如何实现用dos程序自动调整分区大小?(点击访问)”,不由得让人发出“问题由哪里开始就由哪里结束”的感叹。

================== 三、问题的解决 ==================

有了适当的工具再加上详细的参考文档,问题当然就迎刃而解了,下面给出我的初步成果,下面的脚本例子就是为了实现这样一个目标:在硬盘最后面腾出2G的空间并在其上建立一个FAT32主分区,分区卷标为“SYS_GHOST”。

开始我先按照标准的方法书写了一个脚本,但在调试过程中(建议在PM Pro For Windows版本上使用内置的ScriptBuilder进行脚本的书写和调试)发现书写的脚本有一个命令无法执行,但个人感觉命令并没有写错(到现在原因仍然未明),只好修改脚本使用另一种笨办法来实现,这样就有了V1、V2两个版本的脚本,V1版本中不能执行的那条命令我已经标出,还希望大家共同研究,找出不能执行的原因。个人感觉V1版本要比V2版本写的漂亮,可惜不能用。

下面是有关文件的下载:

1、PowerQuest Partition Magic Pro 7.0 For DOS(866KB,点击下载)

2、PowerQuest PartitionMagic Pro脚本设计参考文档(PDF格式英文文档,205KB,点击下载)

3、在硬盘最后面自动创建指定大小的主分区脚本V1(运行时出错,但脚本写的自认没有问题,请高手们共同研究)

4、在硬盘最后面自动创建指定大小的主分区脚本V2(运行正常,但没有脚本1中的程序完美,凑和着用吧)

5、自动在第一块硬盘最后创建一键恢复用主分区的脚本(这算是第三个版本,经过初步测试,运行基本正常,但需要进一步测试,5KB)

上述书写的脚本中都写了详尽的注释,请使用时自己根据实际情况修改里面的参数。

脚本的执行用法(假设脚本文件名为PQ.PQS,且在当前目录下): pqmagic /cmd=pq.pqs [/dbg=debug.txt] [/log=log.txt]

[]中的内容为可选参数,可以用来调试和检查脚本执行过程中出现的问题: /dbg:调试文件 /log:执行日志文件

=============== V1脚本内容: //

****************************************************************************************************************

// CreatePrimaryPartitionAtDiskEnd.PQS:在第一块硬盘的最后建立指定大小的主分区 // 运行前提:

// 1、硬盘最后面一个分区(一般是扩展分区的最后一个逻辑盘)有足够的空闲空间(包括后面的未分配空间)有满足需要的空间。

// 2、硬盘上所有的主分区加扩展分区数量不能大于3。

// 脚本创建者:Climbing(QQ:653668, Email:xclimbing@msn.com, Homepage:http://climbing.minidns.net/dvbbs) // 创建日期:2004.03.15

// 目前本脚本运行状态:不能正常运行,在运行到第56行时出错,原因未明 //

****************************************************************************************************************

// 设置你要创建的主分区的大小,单位为MB(默认是2048MB,即2G)。 Dim PriSize PriSize = 2048

//默认情况下不检测坏扇区,提高操作速度 Set Default Bad Sector Test State OFF

// 选择第一块硬盘 Select Disk 1

// 检测当前硬盘上的主分区数量 Dim PriNum Dim i i = 1 PriNum = 0

Select Partition FIRST

DO WHILE i < GetTotalPartitions IF IsPrimary Then PriNum = PriNum + 1 End If

Select Partition Next i = i + 1 Loop

IF IsPrimary Then PriNum = PriNum + 1 End If

// 检测硬盘上是否有扩展分区,如果有,也算是一个主分区 dim ExtNum

ExtNum = GetPartitionNumber Extended

If ExtNum <> 0 Then PriNum = PriNum + 1 End If

// 只有主分区数量小于4才可以继续 IF PriNum < 4 Then //选择最后一个分区 Select Partition Last

// 检测最后一个分区后面的剩余空间

Dim LastFreeNum

// 注意:在运行下面加粗的这一行命令时会出错,错误提示是该命令无法完成。 // 英文提示:[Script error(53)]: Unable to complete command:

// 这个命令的作用应该是返回硬盘最后一个分区后面的未分配空间的编号,如果没有,则返回0 LastFreeNum = GetUnallocatedNumber After Selected Partition

Dim NeedSpace NeedSpace = PriSize

Dim bTrun bTrun = 1

IF LastFreeNum <> 0 Then

// 选中硬盘最后的未分配空间并检测其大小是否满足需要,如果不满足,则需要缩小最后一个分区的大小

Select Unallocated LastFreeNum

If GetSelectedUnallocatedSize < PriSize then

NeedSpace = PriSize - GetSelectedUnallocatedSize Else

bTrun = 0 End If End If

Select Partition Last Dim bQuit bQuit = 0

If bTrun = 1 Then

// 检测该分区未使用空间是否满足要求 IF GetUnusedAmount >= NeedSpace Then

//改变最后一个分区的大小,在其后面空出需要大小的空间(即NeedSpace变量保存的值) Resize Space After NeedSpace Else

bQuit = 1 End If End If

If bQuit = 0 Then

//选中最后的未分配空间(刚才空出的) Select Unallocated After Selected Partition

//在硬盘最后创建指定大小的分区,分区卷标为SYS_GHOST,当然,你可以根据实际情况修改卷标。

Create /FS=FAT32 /LABEL=\

// 将这个分区转换为主分区 Convert To Primary End If End IF

版本2脚本内容: //

****************************************************************************************************************

// CreatePrimaryPartitionAtDiskEnd.PQS:在第一块硬盘的最后建立指定大小的主分区 // 运行前提:

// 1、硬盘最后面一个分区(一般是扩展分区的最后一个逻辑盘)有足够的空闲空间(包括后面的未分配空间)有满足需要的空间。

// 2、硬盘上所有的主分区加扩展分区数量不能大于3。

// 脚本创建者:Climbing(QQ:653668, Email:xclimbing@msn.com, Homepage:http://climbing.minidns.net/dvbbs) // 创建日期:2004.03.15 // 目前本脚本运行状态:正常 //

****************************************************************************************************************

// 设置你要创建的主分区的大小,单位为MB(默认是2048MB,即2G)。 Dim PriSize PriSize = 2048

//默认情况下不检测坏扇区,提高操作速度 Set Default Bad Sector Test State OFF

// 选择第一块硬盘 Select Disk 1

// 检测当前硬盘上的主分区数量 Dim PriNum Dim i i = 1 PriNum = 0

Select Partition FIRST

DO WHILE i < GetTotalPartitions IF IsPrimary Then PriNum = PriNum + 1

DOS下实现硬盘自动无损数据重新分区的方法

DOS下实现硬盘自动无损数据重新分区的方法================一、问题的提出================说起给硬盘分区,有经验的用户都不会陌生,而且是属于计算机系统安装和维护中经常做的一种操作。当然,分区软件有很多,经典的FDISK,权威的PQPartitionMagic(也就是大名鼎鼎的“分区魔术师”了,下面简称PM)或者Acron
推荐度:
点击下载文档文档为doc格式
25gjf3sgjp1qw0b8dn53
领取福利

微信扫码领取福利

微信扫码分享