基本上完成了。不过在写脚本时出现了一些问题,还需要大家共同研究。
下面是有关文件的下载:
1、
PowerQuest Partition Magic Pro 7.0 For DOS(866KB,点击下载)
2、
PowerQuest PartitionMagic Pro脚本设计参考文档(PDF格式英文文档,205KB,点击下载)
3、
在硬盘最后面自动创建指定大小的主分区脚本版本1(运行时出错,但脚本写的自认没有问题,请高手们共同研究)
4、
在硬盘最后面自动创建指定大小的主分区脚本版本2(运行正常,但没有脚本1中的程序完美,凑和着用吧)
上述书写的脚本中都写了详尽的注释,请使用时自己根据实际情况修改里面的参数。
脚本的用法(假设脚本文件名为PQ.PQS,且在当前目录下):
pqmagic /cmd=pq.pqs
中的内容为可选参数,可以用来调试和检查脚本执行过程中出现的问题:
/dbg: 调试文件
/log: 执行日志文件
===============
版本1脚本内容:
// ****************************************************************************************************************
// 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
// 注意:在运行下面加粗的这一行命令时会出错,错误提示是该命令无法完成。
// 英文提示:: 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 = NeedSpace Then
//改变最后一个分区的大小,在其后面空出需要大小的空间(即FreeSpace变量保存的值)
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="SYS_GHOST" /Size=PriSize /Position=END
// 将这个分区转换为主分区
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
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 = PriSize Then
//改变最后一个分区的大小,在其后面空出需要大小的空间(即FreeSpace变量保存的值)
Resize Space After PriSize
Else
bQuit = 1
End If
If bQuit = 0 Then
//选中最后的未分配空间(刚才空出的)
Select Unallocated After Selected Partition
//在硬盘最后创建指定大小的分区,分区卷标为SYS_GHOST,当然,你可以根据实际情况修改卷标。
Create /FS=FAT32 /LABEL="SYS_GHOST"
// 将这个分区转换为主分区
Convert To Primary
End If
End IF
在脚本2中,如果最后一个分区后面有未分配空间,那么我先将最后一个分区扩大占满未分配空间,然后将将它缩小腾出需要的空间,这样中间就绕了一个弯,可能会导致操作过程大幅度延长(例如你最后一个分区中存放的数据较多的话),当然,如果最后一个分区没有多少数据,应该不会太影响执行速度的。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子”和“
这个帖子”并努力遵守,如果可能,请告诉更多的人!