![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-15 12:51 |
共 47,813 主题排行 / 349,903 发帖 / 今日 1 篇 / 48,257 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 如何实现用dos程序自动调整分区大小???? |
| 可打印版本 12,266 / 98 |
| 第46楼 walu | 发表于 2004-03-15 00:00 |
| 高级用户 发帖 201 积分 916 | |
|
我已再次发送到你两个邮箱了
|
|
| 第47楼 Climbing | 发表于 2004-03-15 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
邮件收到,正在测试。
|
|
| 第48楼 walu | 发表于 2004-03-15 00:00 |
| 高级用户 发帖 201 积分 916 | |
|
版主,你好!测试怎么样了?能否帮我完善一下我那个自动调整的脚本?
|
|
| 第49楼 Climbing | 发表于 2004-03-15 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
基本上完成了。不过在写脚本时出现了一些问题,还需要大家共同研究。
下面是有关文件的下载: 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中,如果最后一个分区后面有未分配空间,那么我先将最后一个分区扩大占满未分配空间,然后将将它缩小腾出需要的空间,这样中间就绕了一个弯,可能会导致操作过程大幅度延长(例如你最后一个分区中存放的数据较多的话),当然,如果最后一个分区没有多少数据,应该不会太影响执行速度的。 |
|
| 第50楼 mewf | 发表于 2004-03-15 00:00 |
| 中级用户 发帖 55 积分 344 | |
|
谢谢各位拉!由于我们这边是2个人上网!白天她上晚上我上所以请原谅!来晚拉!谢谢你们帮我解决了这个问题!还有能不能帮忙把如何测试系统盘已用空间也写上去(测试出系统盘已用大小分配给要重建的备份分区的大小,这样的目的是为了不浪费空间)
|
|
| 第51楼 mewf | 发表于 2004-03-15 00:00 |
| 中级用户 发帖 55 积分 344 | |
|
还有能不能让它在执行的过程中不显示pq界面!显示成我们自己设定的界面啊?
|
|
| 第52楼 walu | 发表于 2004-03-15 00:00 |
| 高级用户 发帖 201 积分 916 | |
|
版主,你的第一个脚本再加把劲完善它吧,有没有可能是PQ7.0有BUG呢?如果能找个8.0的专业版试一试就最好。
|
|
| 第53楼 Climbing | 发表于 2004-03-15 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
我真的找不出来第一个脚本的程序写的有什么问题,我是完全按照pmscript.pdf中的语法写的命令,但执行就是出错,这可能需要请教PowerQuest的技术支持了。
另外,偶虽然号称为版主,可实际上不是版主,就算是,也得让W坛主给开了,呵呵 |
|
| 第54楼 mewf | 发表于 2004-03-15 00:00 |
| 中级用户 发帖 55 积分 344 | |
|
对了!pq8普通的dos版不知道有没有这些功能哦!
/ARG= 这个参数不知道是不是和/cmd=也样啊!要是一样试试pq8好了 |
|
| 第55楼 mewf | 发表于 2004-03-15 00:00 |
| 中级用户 发帖 55 积分 344 | |
|
不会的!
|
|
| 第56楼 Climbing | 发表于 2004-03-15 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
已经试过了,普通的PQ8版本不支持脚本操作,只有pro版本的PQ才能这个功能,也就是说才有/CMD参数,/ARG参数是用来指定命令行参数的,也就是说,除了/ARG参数外,其它的参数可以放到一个文件中然后由/ARG参数来引用,这是为了防止命令行参数过长超过最大限制而设计的。
|
|
| 第57楼 walu | 发表于 2004-03-16 00:00 |
| 高级用户 发帖 201 积分 916 | |
|
Climbing版主,你好!
“能不能帮忙把如何测试系统盘(C盘)已用空间也写上去(测试出系统盘已用大小分配给要重建的备份分区的大小,这样的目的是为了不浪费空间)”这个提议好,能不能实现呢? |
|
| 第58楼 mewf | 发表于 2004-03-16 00:00 |
| 中级用户 发帖 55 积分 344 | |
以下是引用Climbing在2004-3-15 23:24:01的发言: 谢谢你的耐心解释!谢谢!希望能把前面的问题解决了!我现在正把pq的说明一个单词一个单词的翻译呢!不过不知道什么时候才能翻译完啊!晕~~~~~~~~~~~~~~~晕!! |
|
| 第59楼 Climbing | 发表于 2004-03-16 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
以下是引用walu在2004-3-16 7:19:11的发言: 其实我上面给出的脚本中已经有了检查一个分区可用空间大小的命令,一个硬盘上可能有很多个分区,不一定要从C盘(或者说硬盘上的第一个分区)突出空间用来备份数据,除非你的硬盘上只有这一个分区,如果是这种情况,我上面的脚本就可以实现这个功能。 // 选择硬盘上的第一个分区,也就是你说的C分区 Select Partition First // 检查该分区上的可用空间是否有1000MB,如果有,则空出。 IF GetUnusedAmount >= 1000 Then Resize Space After 1000 End If // 选择刚才腾出的空间 Select Unallocated After Selected Partition //在该空间创建指定大小的分区,分区卷标为SYS_GHOST,当然,你可以根据实际情况修改卷标。 Create /FS=FAT32 /LABEL="SYS_GHOST" // 将这个分区转换为主分区 Convert To Primary 注意:以上的命令仅是示例,在运行中可能会出现问题。 |
|
| 第60楼 walu | 发表于 2004-03-16 00:00 |
| 高级用户 发帖 201 积分 916 | |
|
不是,我的意思不是这个。
我的意思是:我想用F11一键还原系统备份C盘,将在硬盘最后一个分区分出一个新分区来存放C盘的镜像。 按照你的自动分区方法,新的分区只能固定2G或1G,总之是固定的。我想自动检测C盘数据若有2G的话,新的分区就自动调整为4G;若有1G的话,新的分区就自动调整为2G。。。。。。 |
|
| 上一页 1 2 3 4 5 6 7 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |