中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 如何实现用dos程序自动调整分区大小????
<   <<   [1] [2] [3] [4] [5] [6] [7]  >>   >
作者:
标题: 如何实现用dos程序自动调整分区大小???? 上一主题 | 下一主题
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 61 楼』:  

这也不复杂啊: 将我写的脚本文件开始定义PriSize的部分改成下面的命令 //选择第一个分区 Select Partition First dim PriSize // 检测第一个分区的使用空间,将PriSize设置成其使用空间的2倍 PriSize = GetUsedAmount * 2




偶只喜欢回答那些标题和描述都很清晰的帖子! 如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-3-16 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (653668)  编辑帖子  回复  引用回复
walu
高级用户




积分 916
发帖 201
注册 2003-5-4
状态 离线
『第 62 楼』:  

谢谢! 你的英文水平也很高,能否将脚本说明书翻译呢? 另:请问Drive Image Pro(专业版)的最高版本是多少?你有吗?我只有它的4.0中文版。


2004-3-16 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 63 楼』:  

我靠,翻译?好几十页呢,我可没有那么大时间。 我没有用过Drive Image,不了解。到网站上查一下啊




偶只喜欢回答那些标题和描述都很清晰的帖子! 如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-3-16 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (653668)  编辑帖子  回复  引用回复
mewf
中级用户




积分 344
发帖 55
注册 2004-3-7
状态 离线
『第 64 楼』:  

// **************************************************************************************************************** // CreatePrimaryPartitionAtDiskEnd.PQS:在第一块硬盘的最后建立第一个分区使用空间的1/2大小的主分区 // 如果最后一个分区的大小不够就将从倒数第二个分区中调整出要分区的空间并将最后一个分区移至倒数第二个分区的末端 // 再在最后的空间上分出主分区 // 脚本创建者:是根据“Climbing(QQ:653668, Email:xclimbing@msn.com, Homepage:http://climbing.minidns.net/dvbbs)”兄的教本改编的。 // mewf(QQ:41371200,Email:wf6187@126.com Homepage:http://www.yd0101.com(万人迷网络电话)) // 创建日期:2004.03.16 // 目前本脚本运行状态:等待测试(本人现在没有可用来做试验的硬盘拉!^_^) // **************************************************************************************************************** // 选择第一块硬盘 Select Disk 1 //默认情况下不检测坏扇区,提高操作速度 Set Default Bad Sector Test State OFF //选择第一个分区 Select Partition First Dim PriSize // 检测第一个分区的使用空间,将PriSize设置成其使用空间的1/2 PriSize = GetUsedAmount / 2 // 检测当前硬盘上的主分区数量 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 // 检测硬盘上逻辑分区的个数 dim LogNum dim l l = 1 LogNum = 0 Select Partition FIRST DO WHILE l < GetTotalPartitions IF IsLogical Then LogNum = LogNum + 1 End If Select Partition Next l = l + 1 Loop // 定义倒数第二个分区 dim ParNum ParNum = PriNum + LogNum - 2 // 选择倒数第二个分区 Select Partition ParNum //改变倒数第二个分区的大小,在其后面空出需要大小的空间(即FreeSpace变量保存的值) Resize Space After PriSize //选择最后一个分区,并将其移至倒数第二个分区的末端 Select Partition Last Move Left Max End If //选中最后的未分配空间(刚才空出的) Select Unallocated After Selected Partition //在硬盘最后创建指定大小的分区,分区卷标为SYS_GHOST,当然,你可以根据实际情况修改卷标。 Create /FS=FAT32 /LABEL="SYS_GHOST" // 将这个分区转换为主分区 Convert To Primary End If

[此贴子已经被作者于2004-3-17 1:40:58编辑过]



2004-3-16 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (41371200)  编辑帖子  回复  引用回复
mewf
中级用户




积分 344
发帖 55
注册 2004-3-7
状态 离线
『第 65 楼』:  

脚本下载地址:http://www.yd0101.com/soft/f11_AutoPartition.PQS

[此贴子已经被作者于2004-3-16 23:03:38编辑过]



2004-3-16 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (41371200)  编辑帖子  回复  引用回复
walu
高级用户




积分 916
发帖 201
注册 2003-5-4
状态 离线
『第 66 楼』:  

经我在虚拟机上测试,脚本出错。 这个问题还是有请Climbing兄指点了,他是高手。 mewf兄的这个脚本对于安装一键恢复很有帮助,请Climbing兄帮帮忙。


2004-3-17 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
mewf
中级用户




积分 344
发帖 55
注册 2004-3-7
状态 离线
『第 67 楼』:  

Climbing兄 出来指导指导啊!谢谢拉!急用啊!~~~~~~~~~~~~~~~~~~~~~~~~~~!


2004-3-17 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (41371200)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 68 楼』:  

不要急啊,我也不是天天盯在这里嘛,我正在看。




偶只喜欢回答那些标题和描述都很清晰的帖子! 如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-3-17 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (653668)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 69 楼』:  

呵呵,我的脚本来了,可费了我不少心思,不过还需要大家进一步测试。 脚本的下载链接: 自动在第一块硬盘最后创建一键恢复用主分区的脚本(经过初步测试,需要进一步测试,5KB) 下面是脚本内容: // **************************************************************************************************************** // F11_AutoCreatePartition.PQS:在第一块硬盘的最后建立第一个分区使用空间的1/2 + 200MB大小的主分区 // 本脚本的设计目标是适应各种情况的硬盘。 // 脚本创建者:Climbing(QQ:653668, Email:xclimbing@msn.com, Homepage:http://climbing.minidns.net/dvbbs) // 创建日期:2004.03.17 // 目前本脚本运行状态:初步测试运行正常,但没有运行各种极限情况下的测试,因此需要进一步测试 // **************************************************************************************************************** // 允许用户在操作后手工重新启动计算机,否则将自动重新启动计算机 Allow Manual Reboot //默认情况下不检测坏扇区,提高操作速度 Set Default Bad Sector Test State OFF // 选择第一块硬盘 Select Disk 1 //选择第一个分区 Select Partition First Dim PriSize // 检测第一个分区的使用空间,将PriSize设置成其使用空间的1/2再加上200M,否则恐怕不够用 PriSize = GetUsedAmount / 2 + 200 // 检测当前硬盘上的主分区数量 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 // 如果存在扩展分区,则选择扩展分区,让它占满前后所有的未分配空间 If ExtNum 0 Then Select Disk 1 Select Partition Extended Resize Max End if // dOperPnum用来保存操作过多少分区 Dim dOperPnum dOperPnum = 0 // bMove 用来判断是否进行了空间腾出操作,如果是,刚为后面的空间移动提供判断基础 Dim bMove bMove = 0 // dLastOpPar保存最后一次操作的分区编号 Dim dLastOpPar // 如果当前未分配空间数量已经满足需要,将不需要进行重新分配空间操作 If GetTotalUnallocatedSpaces < PriSize Then //选择最后一个分区并判断其是否为主分区 Select Partition Last Check // FreeSpace用来保存已经腾出的空间 Dim FreeSpace FreeSpace = 0 // NeedSpace用来保存还需要腾出多少空间 Dim NeedSpace NeedSpace = PriSize Dim dTmp dTmp = 0 // 从最后一个分区循环往前操作以腾出需要的空间 i = 0 Do While FreeSpace = NeedSpace Then //改变该分区的大小,在其后面空出需要大小的空间(即NeedSpace变量保存的值) Resize Space After NeedSpace FreeSpace = FreeSpace + NeedSpace bMove = 1 Else // 如果本分区剩余空间大于100M,则将本分区缩小未使用空间减100M的大小 If GetUnusedAmount > 100 Then dTmp = GetUnusedAmount - 100 Resize Space After dTmp FreeSpace = FreeSpace + dTmp NeedSpace = PriSize - FreeSpace bMove = 1 End If End If i = i + 1 dOperPnum = dOperPnum + 1 // 如果循环到了第一个分区但空间仍然不足,则直接退出循环 If i < GetTotalPartitions Then Select Partition Previous Check dLastOpPar = GetPartitionNumber Next Else If FreeSpace < PriSize Then dLastOpPar = GetPartitionNumber First Exit Loop End If Loop End If // 如果没有进行分区分割操作,两个原因:1、磁盘空间不足;2、未分配空间已经够用 If bMove = 0 Then dLastOpPar = GetPartitionNumber First dOperPnum = GetTotalPartitions Select Partition First Move Left Max Else // 开始将前一个循环中腾出的空间进行后移操作 Dim LastMoveParType Dim CurParNum i = 1 If bMove = 1 Then Select Disk 1 Select Partition dLastOpPar CurParNum = GetPartitionNumber Next If IsPrimary Then LastMoveParType = 1 Else LastMoveParType = 0 End If Do While i < dOperPnum Select Partition Next If IsPrimary Then If LastMoveParType = 0 Then Select Disk 1 Select Partition Extended Resize Min End If Else If LastMoveParType = 1 Then Select Disk 1 Select Partition Extended Resize Left Boundary Max End If End If Select Partition CurParNum Move Left Max If IsPrimary Then LastMoveParType = 1 Else LastMoveParType = 0 End If CurParNum = GetPartitionNumber Next i = i + 1 Loop // 选中最后的未分配空间(刚才空出的) Select Unallocated After Selected Partition //在硬盘最后创建指定大小的分区,分区卷标为SYS_GHOST,当然,你可以根据实际情况修改卷标。 Create /FS=FAT32 /LABEL="SYS_GHOST" // 将这个分区转换为主分区 Convert To Primary End If End If End If 测试以后有什么问题请及时反馈,谢谢!




偶只喜欢回答那些标题和描述都很清晰的帖子! 如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-3-17 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (653668)  编辑帖子  回复  引用回复
mewf
中级用户




积分 344
发帖 55
注册 2004-3-7
状态 离线
『第 70 楼』:  

Climbing兄 谢谢你!非常感谢!!!


2004-3-17 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (41371200)  编辑帖子  回复  引用回复
mewf
中级用户




积分 344
发帖 55
注册 2004-3-7
状态 离线
『第 71 楼』:  

Climbing兄 有没有让pq在执行的过程中不显示pq介面!还有就是有没有能够在WinXP/Win2000/Win9X下都能用又不需要安装的pq pro 7.0啊!谢谢拉!有的共享一下啊!拜托!!!


2004-3-17 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (41371200)  编辑帖子  回复  引用回复
mewf
中级用户




积分 344
发帖 55
注册 2004-3-7
状态 离线
『第 72 楼』:  

怎么没人响应 啊!!


2004-3-17 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (41371200)  编辑帖子  回复  引用回复
walu
高级用户




积分 916
发帖 201
注册 2003-5-4
状态 离线
『第 73 楼』:  

我觉得这个不可能的了,据我了解它好象没有这方面的参数。具体Climbing兄 最有权威。


2004-3-17 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
mewf
中级用户




积分 344
发帖 55
注册 2004-3-7
状态 离线
『第 74 楼』:  

以下是引用walu在2004-3-17 22:55:20的发言: 我觉得这个不可能的了,据我了解它好象没有这方面的参数。具体Climbing兄 最有权威。
哪这个能不能实现啊"在WinXP/Win2000/Win9X下都能用又不需要安装的pq pro 7.0"


2004-3-17 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (41371200)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 75 楼』:  

以下是引用mewf在2004-3-17 20:01:28的发言: Climbing兄 有没有让pq在执行的过程中不显示pq介面!还有就是有没有能够在WinXP/Win2000/Win9X下都能用又不需要安装的pq pro 7.0啊!谢谢拉!有的共享一下啊!拜托!!!
我在QQ上就已经说过了,我对显示界面之类的东西没有兴趣,我觉得你自己可以到网上搜罗一些在DOS下显示图片的小程序,然后用它覆盖PQ的界面(我不知道可行性如何)。 关于PQ for Windows,我觉得安装一下也并不麻烦,如果你真的想免安装,你可以使用安装监视软件检查PQ在安装时在系统目录下安装了哪些文件,把这些文件拷出来再放到PQ的安装目录中,或许应该有效。我没有试,因为我觉得有PQ for DOS就足够用了。PQ For Windows用来调试脚本还有些用处,其它的,我觉得用不到。




偶只喜欢回答那些标题和描述都很清晰的帖子! 如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-3-18 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (653668)  编辑帖子  回复  引用回复
<   <<   [1] [2] [3] [4] [5] [6] [7]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: