上述书写的脚本中都写了详尽的注释,请使用时自己根据实际情况修改里面的参数。 脚本的执行用法(假设脚本文件名为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="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 < 4 Then
//选择最后一个分区,并将其扩大到占用后面所有的未分配空间(开始绕弯子了)
Select Partition Last
Resize Larger Max
// 检测该分区未使用空间是否满足要求
Dim bQuit
bQuit = 0
IF GetUnusedAmount >= PriSize Then
//改变最后一个分区的大小,在其后面空出需要大小的空间(即前面PriSize变量保存的值)
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中,如果最后一个分区后面有未分配空间,那么我先将最后一个分区扩大占满未分配空间,然后将将它缩小腾出需要的空间,这样中间就绕了一个弯,可能会导致操作过程大幅度延长(例如你最后一个分区中存放的数据较多的话),当然,如果最后一个分区没有多少数据,应该不会太影响执行速度的。 |