Board logo

标题: 如何实现用dos程序自动调整分区大小???? [打印本页]

作者: mewf     时间: 2004-3-7 00:00    标题: 如何实现用dos程序自动调整分区大小????

请问如何实现在一个已经分过区的硬盘的最后一个区自动划出一个主分区出来!谢谢!!
(我主要想做一键恢复,但是如何实现在不丢失数据的情况下用dos程序自动把硬盘的最后一个分区调小!并创建一个主分区)
作者: cqbbds     时间: 2004-3-7 00:00
用diskgen
作者: mewf     时间: 2004-3-7 00:00


  Quote:
以下是引用cqbbds在2004-3-7 16:14:21的发言:
用diskgen

加什么参数!谢谢!还有软件在什么地方可以下载到!谢谢拉!
作者: walu     时间: 2004-3-7 00:00


  Quote:
以下是引用mewf在2004-3-7 15:47:10的发言:
请问如何实现在一个已经分过区的硬盘的最后一个区自动划出一个主分区出来!谢谢!!
(我主要想做一键恢复,但是如何实现在不丢失数据的情况下用dos程序自动把硬盘的最后一个分区调小!并创建一个主分区)

这正是我想要问的问题,谁能帮忙?
作者: mewf     时间: 2004-3-7 00:00
555555555555!好像每人理我们哦!好可怜啊!
作者: walu     时间: 2004-3-7 00:00
据说用PQMAGIC可以实现的,我试了试,没有成功,请到此看看:
http://bbs.long-jf.com/showthread.php?s=&threadid=154062
作者: mewf     时间: 2004-3-8 00:00


  Quote:
以下是引用walu在2004-3-7 21:41:25的发言:
据说用PQMAGIC可以实现的,我试了试,没有成功,请到此看看:
http://bbs.long-jf.com/showthread.php?s=&threadid=154062

老大帮我贴过来好吗?那论坛不让注册拉!晕啊
作者: xiaojun     时间: 2004-3-9 00:00
如果你的主分区没用完,后面还有可用空间,PQ没问题,我分过的...
作者: mewf     时间: 2004-3-9 00:00
我说的是用命令+参数!不需要人工超作!可以吗?如果可以能把命令格式写出来吗?谢谢拉!拜托!急啊!如果需要人工操作的就不行拉!!!!!!
作者: qzwqzw     时间: 2004-3-10 00:00
也许ghost的命令行参数可以,那位大大知道具体的情况,谢了!
作者: moroko     时间: 2004-3-11 00:00
gdisk.exe
作者: Climbing     时间: 2004-3-11 00:00
楼主提出的确实是一个很有挑战性的问题,至少到目前为止我没有发现有类似的软件,gdisk只能删除或者新建分区,但不能实现数据无损前提下的分区大小调整。

有一个变通的办法,当然我没有实验,理论上是可行的:先用ghost将要调整的分区数据备份出来(前提是你要调整的分区上没有太多的数据并且有足够的空间可以存放gho文件),然后使用gdisk删除相应的分区并按新的要求重建,重建完成后再用ghost恢复数据。
作者: qzwqzw     时间: 2004-3-11 00:00
Climbing 兄,可以给出具体的实现吗?
作者: Climbing     时间: 2004-3-12 00:00
仔细想了一想,我的方法比较异想天开,没有什么实际的可行性,因为不可测的因素太多了,如果是在本机进行操作,还可以根据实际情况进行定义,但没有什么通用性。
作者: mewf     时间: 2004-3-12 00:00
对啊!谢谢拉!能给出具体的命令吗?还有怎么让ghost和gdisk识别那个分区是最后一个分区呢?
我看联想的一键恢复就有对硬盘分区进行调整的但是不知道它是怎么调整的啊!哪有高手能把联想的一键恢复debug出来就好了!分析一下它是怎样对分区进行操作的就好啦!谢谢楼上那些好心人帮我出注意谢谢拉!到时候要是真弄出来了一定给你们共享!公开一键恢复的所有东西!
作者: mewf     时间: 2004-3-12 00:00


  Quote:
以下是引用Climbing在2004-3-12 9:32:33的发言:
仔细想了一想,我的方法比较异想天开,没有什么实际的可行性,因为不可测的因素太多了,如果是在本机进行操作,还可以根据实际情况进行定义,但没有什么通用性。

Climbing 老兄说的对!现在就是要实现f11系统恢复的通用行!所以难啊!老兄帮我想想办法啊!谢谢拉!跪谢!
作者: Climbing     时间: 2004-3-12 00:00
其实如果你熟悉了分区表,自己写一个程序也不是不可能的,象联想这样的大公司写这样一个程序当然更没有问题。
作者: mewf     时间: 2004-3-12 00:00
Climbing 老兄能不能帮我谢一个啊!我不行啊!55555555555555,我对这些都不行,我只是对一些软件的应用还勉强可以!其他的就不行拉
作者: moroko     时间: 2004-3-12 00:00
你可以用debug 把.gho 写到盘的最 末端  
分区 格式化以后  在读出来 不就可以了
因为 分区 格式化 后你的数据 不会消失  除非你 低格
作者: Climbing     时间: 2004-3-12 00:00
我也没这水平,千万别跪,我受不起。
作者: mewf     时间: 2004-3-13 00:00


  Quote:
以下是引用moroko在2004-3-12 11:58:08的发言:
你可以用debug 把.gho 写到盘的最 末端  
分区 格式化以后  在读出来 不就可以了
因为 分区 格式化 后你的数据 不会消失  除非你 低格

谢谢!能不能说说实现它的具体方法也就是命令格式!谢谢拉!拜托!!
作者: mewf     时间: 2004-3-14 00:00
现在怎么没人理我啊!知道的大哥帮忙出来解决一下啊!还有版主我这个问题很急啊!能不能帮我固顶啊!谢谢拉!拜托!
作者: walu     时间: 2004-3-14 00:00
用的是PQMAGIC 8.02 for DOS版,大家都习惯于图形下进行无损分区,其实在DOS下键入:PQMAGIC /?后提示如下参数:

/ARG= 從檔案讀取其他的指令行參數
/CAS 複製在分割磁區內的所有扇形磁區
/CBS 檢查壞的扇形磁區
/CEC 檢查多餘的磁柱
/DBG[=] 啟動除錯訊息
/ERR= 指定錯誤輸出的檔案
/IFC 略過檢查檔案系統
/LOG= 指定記錄輸出檔案
/MUP 容許在未知的分割磁區移動
/NBS 不檢查壞掉的磁區
/NRB 程式結束後不重新開機
/NRF= 如果檔案存在則離開本程式。(不執行檔案)
/RAV 讀取並確認所有的磁碟寫入
/SCO 只檢查語法(當正在執行 script 時)
/UVM 使用虛擬記憶體
/WFS 在刪除所有分割磁區後清除第一個扇形磁區

从这个参数“/ARG= 從檔案讀取其他的指令行參數”来看,PQMAGIC应该有在命令行下完成无损分区工作功能的,它就是PQMAGIC /ARG=档案名称 但这个“档案名称”具体该怎样写行呢?

作者: Climbing     时间: 2004-3-14 00:00
谢谢walu朋友的提醒,沿着你的思路,我用google搜索了一下,发现PQMagic确实是支持命令行脚本操作的,但可惜只有pro版的PQMagic才有这个功能,我们平常使用的都不是Pro版,在网上搜索了半天,我只找到了图形界面的pro版(最高是7.0版本)。

不知道谁手里有Partition Magic Pro的dos版,如果有,能不能共享一下。如果有了它,楼主的问题就可以迎刃而解了。
作者: mewf     时间: 2004-3-14 00:00
是哦!谢谢拉!拜托!(有的)共享一下啊!
作者: walu     时间: 2004-3-14 00:00
Climbing版主及各位,我找到了PQMAGIC PRO 7.0 FOR DOS版,它的参数 /CMD=可实现自动无损分区,但我不知道那个怎样写才行,请快点研究研究造福兄弟们吧,留下邮箱,我寄给你们!!
作者: mewf     时间: 2004-3-14 00:00
给我发一份!wf6187@126.com
作者: walu     时间: 2004-3-14 00:00
那个filename文件我终于会写一点了, 现在隐藏分区和分割分区的命令我都会写,就是不会写创建分区的命令。
它的格式是这样的(以隐藏最后一个分区为例):

PQMAGIC /CMD=88.TXT

88.TXT内容如下:
select drive 1
select partition last
hide

作者: walu     时间: 2004-3-14 00:00
mewf兄,文件已发送,我们一起来研究,成功后告知一声,谢谢!
作者: mewf     时间: 2004-3-14 00:00
无法打开(文件已损坏)
作者: mewf     时间: 2004-3-14 00:00
调整分区大小呢?可以吗?谢谢!
作者: walu     时间: 2004-3-14 00:00
完全可以!现在我又会写自动创建分区命令了,就是不会写从逻辑分区转为主分区的命令了,这是制作IBM一键恢复的关键。真着急!
作者: mewf     时间: 2004-3-14 00:00
只要能调整硬盘的逻辑分区和扩展分区就好说拉!那样就可以直接创建主dos分区!那样就只需要把想做引导的分区激活就可以拉!能不能把调整分区的命令写出来!谢谢拉
作者: walu     时间: 2004-3-15 00:00
有哪一个软件可以在DOS下自动直接创建主dos分区?
作者: Climbing     时间: 2004-3-15 00:00
To walu: 请将软件上传到ftp://upload:upload@climbing.minidns.net:2121/upload目录下。

谢谢!

给大家一个如何写Script的参考文档:
PowerQuest Partition Magic Pro Script Reference(PDF格式文档,205KB,点击下载)

作者: Climbing     时间: 2004-3-15 00:00
楼主的问题可以用这个Script文件解决:
// 选择第一块硬盘
Select Disk 1

//选择最后一个分区
Select Partition Last

//改变最后一个分区的大小,在其后面空出1024MB的空间
Resize Space After 1024

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

//创建分区
Create /FS=FAT32 /LABEL="SYS_GHOST"

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

当然,标准的做法还应该加上检测命令,例如检测硬盘上是否已经有足够的剩余空间,检测当前的主分区数量等,慢慢完善吧。上面的Script假设你的硬盘的最后一个分区有足够的空间,且主分区数量还没有到三个,然后利用最后一个分区的剩余空间在硬盘的最后创建一个1G的主分区。

作者: mewf     时间: 2004-3-15 00:00
没有权限上传不上去
作者: mewf     时间: 2004-3-15 00:00
软件上传拉,下载地址:http://www.yd0101.com/soft/pq70.rar
作者: Climbing     时间: 2004-3-15 00:00


  Quote:
以下是引用mewf在2004-3-15 9:23:29的发言:
没有权限上传不上去

我的服务器能够上传啊,用户名和密码都是upload,注意端口号是2121。

你上传的那个地址下载不了,Not Found。
作者: moroko     时间: 2004-3-15 00:00
不觉得调整起来特别的慢吗????
debug 其实我也不会
也是从网上 无意中看到的
到  狗狗  去找吧
作者: Climbing     时间: 2004-3-15 00:00
真着急呀,现在就等着walu和mewf两位兄弟哪位给我传一个PM Pro For DOS的版本我好试验一下了,可是两位就是不上线,也没有反应,都干什么去了?

实在不行发我邮箱吧:climbingxie@163.com或者xclimbing@msn.com。

关于楼上速度慢的说法:其实PM设置好了相关参数(例如不检查坏扇区、不扫描磁盘等),操作起来速度是很快的(当然前提是你的硬盘上别有太多的数据),而且PM至少可以保证万无一失,不会丢失有用的数据。


作者: walu     时间: 2004-3-15 00:00
版主,已发送到climbingxie@163.com这个邮箱
请把它的参数弄明白告诉一声哦,谢谢!
作者: walu     时间: 2004-3-15 00:00
简直可以用狂喜来形容现在的心情!!!
谢谢Climbing版主!!
这个问题我一直都在期望解决,今天终于成功!
最主要功臣就是Climbing版主!
其次是mewf朋友的耐心顶帖,使这帖终成正果!
这样,即使不熟悉电脑的人都可以安装IBM的F11一键恢复了!
作者: walu     时间: 2004-3-15 00:00
FTP上不了,已发送到xclimbing@msn.com这个邮箱

作者: Climbing     时间: 2004-3-15 00:00
我没有收到你传给我的软件,所以也没有办法试验,如果能够试验,我一定会写出尽量完美的程序共享出来。

建议你将软件直接传到我的FTP服务器上。
作者: walu     时间: 2004-3-15 00:00
我已再次发送到你两个邮箱了
作者: Climbing     时间: 2004-3-15 00:00
邮件收到,正在测试。
作者: walu     时间: 2004-3-15 00:00
版主,你好!测试怎么样了?能否帮我完善一下我那个自动调整的脚本?
作者: Climbing     时间: 2004-3-15 00:00
基本上完成了。不过在写脚本时出现了一些问题,还需要大家共同研究。

下面是有关文件的下载:
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=debug.txt] [/log=log.txt]

[]中的内容为可选参数,可以用来调试和检查脚本执行过程中出现的问题:
/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
// 注意:在运行下面加粗的这一行命令时会出错,错误提示是该命令无法完成。
// 英文提示:[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 = 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中,如果最后一个分区后面有未分配空间,那么我先将最后一个分区扩大占满未分配空间,然后将将它缩小腾出需要的空间,这样中间就绕了一个弯,可能会导致操作过程大幅度延长(例如你最后一个分区中存放的数据较多的话),当然,如果最后一个分区没有多少数据,应该不会太影响执行速度的。









[此贴子已经被作者于2004-3-15 21:16:26编辑过]



作者: mewf     时间: 2004-3-15 00:00
谢谢各位拉!由于我们这边是2个人上网!白天她上晚上我上所以请原谅!来晚拉!谢谢你们帮我解决了这个问题!还有能不能帮忙把如何测试系统盘已用空间也写上去(测试出系统盘已用大小分配给要重建的备份分区的大小,这样的目的是为了不浪费空间)
作者: mewf     时间: 2004-3-15 00:00
还有能不能让它在执行的过程中不显示pq界面!显示成我们自己设定的界面啊?
作者: walu     时间: 2004-3-15 00:00
版主,你的第一个脚本再加把劲完善它吧,有没有可能是PQ7.0有BUG呢?如果能找个8.0的专业版试一试就最好。
作者: Climbing     时间: 2004-3-15 00:00
我真的找不出来第一个脚本的程序写的有什么问题,我是完全按照pmscript.pdf中的语法写的命令,但执行就是出错,这可能需要请教PowerQuest的技术支持了。

另外,偶虽然号称为版主,可实际上不是版主,就算是,也得让W坛主给开了,呵呵
作者: mewf     时间: 2004-3-15 00:00
对了!pq8普通的dos版不知道有没有这些功能哦!
/ARG=
这个参数不知道是不是和/cmd=也样啊!要是一样试试pq8好了
作者: mewf     时间: 2004-3-15 00:00
不会的!
作者: Climbing     时间: 2004-3-15 00:00
已经试过了,普通的PQ8版本不支持脚本操作,只有pro版本的PQ才能这个功能,也就是说才有/CMD参数,/ARG参数是用来指定命令行参数的,也就是说,除了/ARG参数外,其它的参数可以放到一个文件中然后由/ARG参数来引用,这是为了防止命令行参数过长超过最大限制而设计的。
作者: walu     时间: 2004-3-16 00:00
Climbing版主,你好!
“能不能帮忙把如何测试系统盘(C盘)已用空间也写上去(测试出系统盘已用大小分配给要重建的备份分区的大小,这样的目的是为了不浪费空间)”这个提议好,能不能实现呢?
作者: mewf     时间: 2004-3-16 00:00


  Quote:
以下是引用Climbing在2004-3-15 23:24:01的发言:
已经试过了,普通的PQ8版本不支持脚本操作,只有pro版本的PQ才能这个功能,也就是说才有/CMD参数,/ARG参数是用来指定命令行参数的,也就是说,除了/ARG参数外,其它的参数可以放到一个文件中然后由/ARG参数来引用,这是为了防止命令行参数过长超过最大限制而设计的。

谢谢你的耐心解释!谢谢!希望能把前面的问题解决了!我现在正把pq的说明一个单词一个单词的翻译呢!不过不知道什么时候才能翻译完啊!晕~~~~~~~~~~~~~~~晕!!
作者: Climbing     时间: 2004-3-16 00:00


  Quote:
以下是引用walu在2004-3-16 7:19:11的发言:
Climbing版主,你好!
“能不能帮忙把如何测试系统盘(C盘)已用空间也写上去(测试出系统盘已用大小分配给要重建的备份分区的大小,这样的目的是为了不浪费空间)”这个提议好,能不能实现呢?

其实我上面给出的脚本中已经有了检查一个分区可用空间大小的命令,一个硬盘上可能有很多个分区,不一定要从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

注意:以上的命令仅是示例,在运行中可能会出现问题。
作者: walu     时间: 2004-3-16 00:00
不是,我的意思不是这个。
我的意思是:我想用F11一键还原系统备份C盘,将在硬盘最后一个分区分出一个新分区来存放C盘的镜像。
按照你的自动分区方法,新的分区只能固定2G或1G,总之是固定的。我想自动检测C盘数据若有2G的话,新的分区就自动调整为4G;若有1G的话,新的分区就自动调整为2G。。。。。。
作者: Climbing     时间: 2004-3-16 00:00
这也不复杂啊:

将我写的脚本文件开始定义PriSize的部分改成下面的命令
//选择第一个分区
Select Partition First
dim PriSize
// 检测第一个分区的使用空间,将PriSize设置成其使用空间的2倍
PriSize = GetUsedAmount * 2
作者: walu     时间: 2004-3-16 00:00
谢谢!
你的英文水平也很高,能否将脚本说明书翻译呢?
另:请问Drive Image Pro(专业版)的最高版本是多少?你有吗?我只有它的4.0中文版。
作者: Climbing     时间: 2004-3-16 00:00
我靠,翻译?好几十页呢,我可没有那么大时间。

我没有用过Drive Image,不了解。到网站上查一下啊
作者: mewf     时间: 2004-3-16 00:00
// ****************************************************************************************************************
// 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编辑过]



作者: mewf     时间: 2004-3-16 00:00
脚本下载地址:http://www.yd0101.com/soft/f11_AutoPartition.PQS


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



作者: walu     时间: 2004-3-17 00:00
经我在虚拟机上测试,脚本出错。
这个问题还是有请Climbing兄指点了,他是高手。
mewf兄的这个脚本对于安装一键恢复很有帮助,请Climbing兄帮帮忙。
作者: mewf     时间: 2004-3-17 00:00
Climbing兄 出来指导指导啊!谢谢拉!急用啊!~~~~~~~~~~~~~~~~~~~~~~~~~~!
作者: Climbing     时间: 2004-3-17 00:00
不要急啊,我也不是天天盯在这里嘛,我正在看。
作者: Climbing     时间: 2004-3-17 00:00
呵呵,我的脚本来了,可费了我不少心思,不过还需要大家进一步测试。

脚本的下载链接:
自动在第一块硬盘最后创建一键恢复用主分区的脚本(经过初步测试,需要进一步测试,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

测试以后有什么问题请及时反馈,谢谢!
作者: mewf     时间: 2004-3-17 00:00
Climbing兄 谢谢你!非常感谢!!!
作者: mewf     时间: 2004-3-17 00:00
Climbing兄 有没有让pq在执行的过程中不显示pq介面!还有就是有没有能够在WinXP/Win2000/Win9X下都能用又不需要安装的pq pro 7.0啊!谢谢拉!有的共享一下啊!拜托!!!
作者: mewf     时间: 2004-3-17 00:00
怎么没人响应 啊!!
作者: walu     时间: 2004-3-17 00:00
我觉得这个不可能的了,据我了解它好象没有这方面的参数。具体Climbing兄 最有权威。
作者: mewf     时间: 2004-3-17 00:00


  Quote:
以下是引用walu在2004-3-17 22:55:20的发言:
我觉得这个不可能的了,据我了解它好象没有这方面的参数。具体Climbing兄&nbsp;最有权威。

哪这个能不能实现啊"在WinXP/Win2000/Win9X下都能用又不需要安装的pq pro 7.0"
作者: Climbing     时间: 2004-3-18 00:00


  Quote:
以下是引用mewf在2004-3-17 20:01:28的发言:
Climbing兄&nbsp;有没有让pq在执行的过程中不显示pq介面!还有就是有没有能够在WinXP/Win2000/Win9X下都能用又不需要安装的pq&nbsp;pro&nbsp;7.0啊!谢谢拉!有的共享一下啊!拜托!!!

我在QQ上就已经说过了,我对显示界面之类的东西没有兴趣,我觉得你自己可以到网上搜罗一些在DOS下显示图片的小程序,然后用它覆盖PQ的界面(我不知道可行性如何)。

关于PQ for Windows,我觉得安装一下也并不麻烦,如果你真的想免安装,你可以使用安装监视软件检查PQ在安装时在系统目录下安装了哪些文件,把这些文件拷出来再放到PQ的安装目录中,或许应该有效。我没有试,因为我觉得有PQ for DOS就足够用了。PQ For Windows用来调试脚本还有些用处,其它的,我觉得用不到。
作者: mewf     时间: 2004-3-18 00:00
for windows 主要是 for dos 的在win9x/win2000/winXP下都没办法运行!所以才想到用for Windows版的!还有安装监测软件能不能给我说一个啊!谢谢拉
作者: Climbing     时间: 2004-3-18 00:00
安装监视软件你可以用RegShot,在安装PQ前后用它为注册表和C盘进行快照,然后比较两个快照就行了。
作者: mewf     时间: 2004-3-19 00:00
谢谢你
作者: walu     时间: 2004-3-19 00:00
Climbing兄,你好!

因我对脚本及英文很不熟悉,想按自己意愿对你的脚本改动一些,却不成功。
我想实现这样的:首先检测最后一个分区,若有足够空间(即符合条件)就对它进行分割;若没有足够空间,则转到检测第一个分区(即主分区),若有足够空间,就对它进行分割;若没有足够空间就从倒数第二个分区循环往前操作以腾出需要的空间。
也就是说,原脚本中若检测最后一个分区没有足够空间时就转向倒数第二个分区,而现在我要求先转向第一主分区,然后才转到倒数第二个分区。

为什么这样做?因为从倒数第二个分区把空间空出来给最后一个分区,因要移动的数据多造成分区很慢;而很多电脑第一分区C盘往往比较大如有10G,若从它的尾部空出2G空间则不用移动数据,也就加快了分区的速度。当然对C盘分割时会考虑给它留下足够的剩余的空间的,IF GetUnusedAmount > PriSize  + 2048 Then
即它未使用的空间GetUnusedAmount要比分割的空间PriSize还要多2G才允许操作。
作者: Climbing     时间: 2004-3-20 00:00
你说的也有道理,但这样建立起来的主分区就不是在硬盘最后面了,而是在第一主分区后面,当然这样建立的主分区并不影响一键恢复的安装,应该是可行的。按你的要求是要先检测最后一个分区空间是否够用,如果不够,再检测第一个分区,如果仍然不够,按我的V3脚本进行操作,对吧?

下面是按照你的需要修改后的脚本:
// 允许用户在操作后手工重新启动计算机,否则将自动重新启动计算机
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 = PriSize Then
          Resize Space After PriSize
          // 选中最后的未分配空间(刚才空出的)
          Select Unallocated After Selected Partition

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

          // 将这个分区转换为主分区
          Convert To Primary
          bDone = 1
     End If
     
     // 如果最后一个分区的空间不够用,则检测第一个分区空间是否够用,如果够用,仍然重复刚才的操作。
     If bDone = 0 Then
          Select Partition First
          Check
          Resize Larger Max
          If GetUnusedAmount >= PriSize + 2048 Then
               Resize Space After PriSize
               // 选中最后的未分配空间(刚才空出的)
               Select Unallocated After Selected Partition

               //创建指定大小的分区,分区卷标为SYS_GHOST,当然,你可以根据实际情况修改卷标。
               Create /FS=FAT32 /LABEL="SYS_GHOST"

               // 将这个分区转换为主分区
               Convert To Primary
               bDone = 1
          End If
     End If

     // 前面两个操作都没有成功的话,进行第三步操作,也是最复杂的操作,主要表现在耗时最长上
     If bDone = 0 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    //If GetTotalUnallocatedSpaces < PriSize

     // 如果没有进行分区分割操作,两个原因: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    // If bMove = 1
     End If    // If bMove = 0
     End If    // If bDone = 0
End If    // If PriNum < 4
作者: walu     时间: 2004-3-20 00:00
感谢 Climbing 兄!今天等你一个上午,终于得到你的帮助。我弄了一个上午也弄不清楚,没办法,自己是个电脑盲兼英文盲。
这个脚本经刚才测试完全通过。
      对于PQMAGIC自动无损分区我一直都在虚拟机测试,其实如果用到循环的话,在真实电脑上移动数据是很慢很慢的,试想,移动完最后一个分区数据还要移动倒数第二个,然后倒数第三。。。。。。所以我觉得V3脚本中的循环在理论上是完美的,但在实际中会造成进退两难:一旦开始分区就不能退出,要么等一个多小时至几个小时,要么退出就会造成分区表错误(退出更加万万不能)。
      所以我认为,要移动分区数据的话只能移动一个分区不要二个以上,否则还不如在WINDOWS下将要移动的分区的文件先转移到其它分区,再操作。
     因此,再烦请Climbing 兄帮我做这样一个脚本:先检测最后分区,若有足够空间则进行操作;如不够空间再检测第一个分区...;如不够再检测第二个分区(D盘),若有空间则从D盘前面部分(只能前面部分)截取需要的空间;D盘还不够空间,再从倒数第二个逻辑分区截取需要的空间给最后分区,然后从最后分区腾出空间,建立需要的主分区。
     Climbing 兄,在自动分区这个问题上最后一次麻烦你啦,真不好意思,但愿你能帮帮忙,谢谢!等你好消息。

作者: walu     时间: 2004-3-20 00:00
如果倒数第二个逻辑分区都还没有空间的话,就退出自动分区操作了。
作者: Climbing     时间: 2004-3-20 00:00
我上午考试去了,没有机会上网的。

我觉得V4的脚本基本上已经算是最终版本了,因为既然你最终就是要建立这个分区,迟早也要等这么长时间的,而v4版本中已经尽量考虑了各种情况,如果再要考虑你的情况,这个脚本就搞的太复杂了,还不如直接手工用pqmagic分这个区呢。你说是不是呢?毕竟程序就是程序,不可能考虑到所有的情况,关键时刻还要人参与。例如,你可以先手动将目标硬盘整理成最后一个分区有足够的空间(或者第一个分区有足够的空间),然后再运行该脚本进行分区的建立,毕竟,如果移动太多的分区也可能造成数据丢失的,在操作之前最好还是先备份数据。
作者: walu     时间: 2004-3-20 00:00
Climbing兄,能告诉我怎样定义倒数第二个分区吗?即在脚本中怎样表达倒数第二个分区?谢谢!
作者: Climbing     时间: 2004-3-20 00:00
关于你所说的倒数第二个分区在实际情况中是一个未知数,你明白吗?我举例说明:如果你的硬盘上只有一个分区,就没有倒数第二个分区,这是其中一种情况,另一种情况是,最后一个分区是一个主分区,而倒数第二个分区却是一个逻辑盘,还有可能最后一个分区是一个逻辑盘,而倒数第二个分区却是一个主分区,而这些都要考虑到你的程序中,你编程序考虑的太简单了,而程序如果考虑的这么简单,就肯定在运行时会经常出故障,而经常出故障的程序是没有意义的。

我按最简单的意义来说吧,假设你的硬盘上肯定有两个以上的分区:
那么:Select Partition Last是选择最后一个分区,接着运行一条命令:Select Partition Previous就是选择刚才选择的那一个分区前面的一个分区,这不就是倒数第二个分区了吗?
所以综合起来下面两个语句就是选择硬盘上的倒数第二个分区:
Select Partition Last
Select Partition Previous

但是,在编写实际的脚本程序时,你要充分考虑到我前面所说的各种情况,否则程序运行就会出错或者与你的设想不一致的结局。
作者: walu     时间: 2004-3-22 00:00
无意中发现,用PQMAGIC 7。0PRO中的PQPB。RTC替换PQMAGIC 8。02中的同名文件后,PQMAGIC8。02也可以带参数CMD运行脚本文件了,而实际上运行的程序仍然是PQMAGIC8。02,只不过显示的是PQMAGIC7。0PRO。我试了一下子,并不会不稳定,替换后键入PQMAGIC /?后显示有CMD参数。
因我不懂编程等有关方面知识,所以这样会否有不妥地方?
是不是把PQPB。RTC中加一个有关CMD方面的内容就可以使PQMAGIC8。02使用脚本了?我觉得PQMAGIC8。02本来就是支持脚本的,只不过隐藏了。
作者: Climbing     时间: 2004-3-22 00:00
好发现!
作者: moroko     时间: 2004-3-23 00:00
要是我就放弃PQ  因为无损分区是很慢的
慢的让人受不了
自杀的心都有



[此贴子已经被作者于2004-3-23 0:52:58编辑过]



作者: moroko     时间: 2004-3-23 00:00
我用ghost 备份了一个xp 大概 1个g  左右 然后使用脚本对硬盘分区
花去的时间 简直让人无发想象,我感觉还是算了
找个别的办法 ,解决这个分区问题
那到只有pq能办到吗????
作者: Climbing     时间: 2004-3-23 00:00


  Quote:
以下是引用moroko在2004-3-23 1:02:45的发言:
我用ghost&nbsp;备份了一个xp&nbsp;大概&nbsp;1个g&nbsp;&nbsp;左右&nbsp;然后使用脚本对硬盘分区
花去的时间&nbsp;简直让人无发想象,我感觉还是算了
找个别的办法&nbsp;,解决这个分区问题
那到只有pq能办到吗????

最快的办法是将硬盘上的所有数据都干掉然后重新分区,如果你觉得你的数据没有用的话这样做最快。否则,估计没有更好的办法。另外,我不明白你在分区之前用ghost备份xp干什么?只要你的分区没有逻辑错误,根本不需要这样干,另外,如果用pq分区的话,除非你的硬盘上有大量数据需要移动,否则应该速度是很快的。
作者: jsea123     时间: 2006-2-8 22:26
要是有返回值给DOS就好了
作者: microbird     时间: 2006-3-17 03:28
不错,我觉得最好的半自动就行!
建议客户能给自己腾空一定空间再进行!
作者: hzy     时间: 2006-3-19 02:35
参考参考!
作者: hzy     时间: 2006-3-20 20:21


  Quote:
Originally posted by walu at 2004-3-20 12:00 AM:
感谢 Climbing 兄!今天等你一个上午,终于得到你的帮助。我弄了一个上午也弄不清楚,没办法,自己是个电脑盲兼英文盲。
这个脚本经刚才测试完兠...

为什么我这里运行这个脚本一点动静都没有呢?

批处理里面的语句:

pqmagic /cmd=pq.pqs


pq.pqs内容如下:(硬盘最后部分有2.0G未分配空间)

Select disk 1
Select Unallocated Largest
Create /FS=FAT32 /Size=GetUnallocatedSize
作者: hzy     时间: 2006-3-24 00:22
PQS脚本如下,可以实现自动分区。但不知为什么用这个脚本分区,装完IBM的一键还原程序后,扩展分区变成了“Type15”(PQ里变成黄色)?用PQ手动分区装IBM的一键还原程序则没有问题!

Select Disk 1
Select Partition First
Dim NeedSize
NeedSize = GetUsedAmount / 2 + 500
Select Partition Last
If GetUnusedAmount < NeedSize then
Select Partition First
End If
Resize Space After NeedSize
Select Unallocated After Selected Partition
Create /FS=FAT32 /LABEL="IBM_SERVICE"
Unhide
Convert To Primary
作者: Climbing     时间: 2006-3-24 09:13


  Quote:
Originally posted by hzy at 2006-3-24 00:22:
PQS脚本如下,可以实现自动分区。但不知为什么用这个脚本分区,装完IBM的一键还原程序后,扩展分区变成了“Type15”(PQ里变成黄色)?用PQ手动分堮..

个人感觉,你写的分区脚本应该没有什么大问题,但我没有安装过IBM的一键还原程序,出你说的问题,有可能是IBM一键还原程序的问题。
作者: hotdog53     时间: 2006-9-9 23:00    标题: 求助

可否将这个for dos版的分区软件也发一份给我,不甚感激,我找了很久,都找不到
q520112@163.com
作者: chainliq     时间: 2006-9-10 01:20
噢,不错,最好能出来,我想这个在分区的时候,应该停留多久这个问题下手哦~!
作者: dugusuo     时间: 2010-3-15 16:05    标题: 用PQ的参数命令合并分区

如何用PQ的参数命令合并分区,就是把硬盘的最后的两个分区合并啊,把倒数第2个分区合并到最后那个分区里去啊。。。。。。。。。。。。。。




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5