无忧启动论坛

标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法 [打印本页]

作者: Climbing    时间: 2004-3-15 22:28
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
[这个贴子最后由Climbing在 2004/03/17 02:58pm 第 2 次编辑]

[原创]DOS下实现硬盘自动无损数据重新分区的方法
================
一、问题的提出
================
说起给硬盘分区,有经验的用户都不会陌生,而且是属于计算机系统安装和维护中经常做的一种操作。当然,分区软件有很多,经典的FDISK,权威的PQ PartitionMagic(也就是大名鼎鼎的“分区魔术师”了,下面简称PM) 或者Acronis PartitionExpert(分区软件的新秀),还有命令行下的Gdisk,当然,还有Diskman、FBDisk等很多软件,个人经常使用的是PQ Partition Magic、BootStar,当然也经常使用Fdisk做一些辅助性的操作。DOS方式下人工交互式的分区个人认为还是PM最好用,如果要自动进行分区,对于全新的硬盘来说,当然用Gdisk是一个不错的选择。但如果我想在DOS下使用命令行实现类似PM的无损数据分区该如何办呢?例如,我想实现自动安装IBM一键恢复,这个方案要解决的第一个问题就是如何实现自动无损数据分区(在硬盘的末尾自动建立一个指定大小的主分区并设置合适的卷标)。
==================
二、问题解决过程
==================
要解决前面提出的问题,首选当然就是考虑PM是否有这个功能了,如果PM能够支持在命令行运行一个类似批处理的自动分区脚本文件,这个问题就可以解决了。我日常使用的是从网上下载的PM 8.0纯DOS版,在DOS方式下输入:
pqmagic /?
还真有不少参数,但仔细一看,没有一个参数能够完成前面所述功能。看来PM不成,于是用google在网上搜索,搜索到最多的结果就是gdisk,但可惜它只能在硬盘上有未分区空间的前提下才可以使用,找不到软件怎么办?灵机一动,访问PowerQuest的官方网站,在该网站首页看到的第一个消息就是PowerQuest公司被Symantec公司收购了,网页上方打上了大大的Symantec的字样标志,好在网站还在正常运行,正常的技术支持页面也可以使用,于是试着搜索"Batch"或者"Script"之类的关键字,果然在知识库中找到了有关运行Script时出现的错误及解决办法等,后来发现这些错误只是针对Partition Magic Pro(下面简称为PM Pro) 或者Volume Manager这样的软件,Volume Manager不用考虑了,那是Server系统使用的分区软件,于是打开PM Pro的介绍页面(点击访问),发现官方网站上Pro版本的PM最新版本是7.0,在其功能介绍中的“EXCEPTIONAL EASE OF USE” 中发现这一段介绍“ Scripting - Change the partitions on a computer by running a script that you create with ScriptBuilder. To run a script, simply pass the script filename to the program on the command line. ”,好了,这就是我们要找的东西了,原来普通的PM并不支持脚本操作,只有Pro版本才支持,于是又到网上搜索并向各个论坛求助,终于在“中国DOS联盟之联合DOS论坛(点击访问)”的walu站友那里取得了PM Pro 7.0的纯DOS版本(稍后会提供软件的下载),也巧了,这个问题的缘起也是因为该论坛里mewf网友的一个求助帖子:“如何实现用dos程序自动调整分区大小?(点击访问)”,不由得让人发出“问题由哪里开始就由哪里结束”的感叹。
==================
三、问题的解决
==================
有了适当的工具再加上详细的参考文档,问题当然就迎刃而解了,下面给出我的初步成果,下面的脚本例子就是为了实现这样一个目标:在硬盘最后面腾出2G的空间并在其上建立一个FAT32主分区,分区卷标为“SYS_GHOST”。
开始我先按照标准的方法书写了一个脚本,但在调试过程中(建议在PM Pro For Windows版本上使用内置的ScriptBuilder进行脚本的书写和调试)发现书写的脚本有一个命令无法执行,但个人感觉命令并没有写错(到现在原因仍然未明),只好修改脚本使用另一种笨办法来实现,这样就有了V1、V2两个版本的脚本,V1版本中不能执行的那条命令我已经标出,还希望大家共同研究,找出不能执行的原因。个人感觉V1版本要比V2版本写的漂亮,可惜不能用。
下面是有关文件的下载:
1、PowerQuest Partition Magic Pro 7.0 For DOS(866KB,点击下载)
2、PowerQuest PartitionMagic Pro脚本设计参考文档(PDF格式英文文档,205KB,点击下载)
3、在硬盘最后面自动创建指定大小的主分区脚本V1(运行时出错,但脚本写的自认没有问题,请高手们共同研究)
4、在硬盘最后面自动创建指定大小的主分区脚本V2(运行正常,但没有脚本1中的程序完美,凑和着用吧)
5、自动在第一块硬盘最后创建一键恢复用主分区的脚本(这算是第三个版本,经过初步测试,运行基本正常,但需要进一步测试,5KB)

上述书写的脚本中都写了详尽的注释,请使用时自己根据实际情况修改里面的参数。
脚本的执行用法(假设脚本文件名为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://www.nufans.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://www.nufans.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中,如果最后一个分区后面有未分配空间,那么我先将最后一个分区扩大占满未分配空间,然后将将它缩小腾出需要的空间,这样中间就绕了一个弯,可能会导致操作过程大幅度延长(例如你最后一个分区中存放的数据较多的话),当然,如果最后一个分区没有多少数据,应该不会太影响执行速度的。
呵呵,第三个版本的脚本出来了,可费了我不少心思,不过还需要大家进一步测试。
第三个版本充分考虑了各种硬盘的情况,因此搞的也就比较复杂,估计肯定有Bug存在,我已经测试了几种情况,但有些极限情况没有测试。
版本3脚本的下载链接:
自动在第一块硬盘最后创建一键恢复用主分区的脚本(经过初步测试,需要进一步测试,5KB)
下面是脚本内容:
// ****************************************************************************************************************
// F11_AutoCreatePartition.PQS:在第一块硬盘的最后建立第一个分区使用空间的1/2 + 200MB大小的主分区
// 本脚本的设计目标是适应各种情况的硬盘。
// 脚本创建者:Climbing(QQ:653668, Email:xclimbing@msn.com, Homepage:http://www.nufans.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 < PriSize  
               // 将当前操作分区扩到最大
               Resize Larger Max
               // 检测该分区未使用空间是否满足要求,如果满足,空出需要空间,如果不满足,继续操作
               IF GetUnusedAmount >= 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

[ 本帖最后由 老毛桃 于 2006-7-19 03:51 PM 编辑 ]
作者: foxrao    时间: 2004-3-15 22:34
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
谢谢你的文章,顶
作者: sh168    时间: 2004-3-15 23:25
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
无敌老大!支持,感谢
作者: 雪很冷    时间: 2004-3-15 23:37
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
没什么好说的。惟有拼命的顶。才能对得起如此强帖。
感动。。
希望多出这样的强帖啊。5555555
作者: shMaxFei    时间: 2004-3-15 23:48
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
支持!
作者: 禹龙    时间: 2004-3-16 09:00
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
我这样的菜鸟都能将这个帖子看懂个大概意思 ,好帖啊!
作者: 浪客游侠    时间: 2004-3-16 09:04
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
简单的事情让你说的那么复杂啊~!
不过。我支持~!!!
作者: huage2k4    时间: 2004-3-16 09:11
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
五体投地!!!
作者: Climbing    时间: 2004-3-16 09:43
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
下面引用由浪客游侠2004/03/16 09:04am 发表的内容:
简单的事情让你说的那么复杂啊~!
不过。我支持~!!!
噢,你有什么更简单的请指教?
作者: wxf617    时间: 2004-3-16 12:25
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
万分感谢
作者: s210603    时间: 2004-3-16 14:57
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
软件无法下载,能否直接传上来,或 Email: s210603@hotmail.com ?
作者: Climbing    时间: 2004-3-16 15:23
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
就你自己下载不了,这种要求无法满足。
作者: hb9685    时间: 2004-3-16 17:53
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
顶!
作者: leebaker    时间: 2004-3-16 18:58
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
g持
作者: ggordd    时间: 2004-3-16 19:36
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
好贴,做PC机一键恢复正用得着。
作者: flygod3000    时间: 2004-3-16 21:48
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
好文章
作者: tiandi    时间: 2004-3-17 14:22
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
up
作者: dzy    时间: 2004-3-17 16:53
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
[UploadFile=34_940_18.jpg]好~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

好~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

好~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

作者: foxrao    时间: 2004-3-19 17:53
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
谢谢climbing,提供的脚本,我把它用在我的一键恢复程序里啦。
下载地址:
地址:climbing.minidns.net
端口:2121
用户名及密码:upload
/upload/启动光盘相关/一键恢复精灵/恢复精灵 4.rar 5.29 MB
感谢climbing老大提供的空间。
作者: gege    时间: 2004-3-19 20:27
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
厉害,支持。
作者: guies    时间: 2004-3-20 01:15
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
試了一下,為什麼分區完後一定是隱藏的..降子就不能直接 Copy 檔案過去了..是否有其它的參數..
作者: Climbing    时间: 2004-3-20 15:44
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
不会吧,怎么会是隐藏的呢?我在测试时可不是这样的。
作者: guies    时间: 2004-3-20 18:37
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
我是用 Virtual PC 試的,每次的確分割後的最後一個分區會被隱藏起來..我已參考了 pmscript.pdf 這個文件,並對文件的最後幾行加了 UnHide 就無此問題了..
還有一個問題就是 OS 如果為 Server 的話這個程式也是不能使用.. PowerQuest 老是搞這種把戲..
        If bQuit = 0 Then
                //選中最後的未分配空間(剛才空出的)
                Select Unallocated After Selected Partition
                //在硬盤最後創建指定大小的分區,當然,你可以根據實際情況修改卷標。
                Create /FS=FAT32 /LABEL="IBM_SERVICE"
                //不設為隱藏          ←多了 UnHide 這個指令
                UnHide
                // 將這個分區轉換為主分區
                Convert To Primary
        End If
End IF


作者: guies    时间: 2004-3-20 18:49
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
剛又用了 VMware 試了..也一樣會被隱藏..實機是沒有試..
不過我想多加 UnHide 比較安心.. 否則如果被設隱藏要作一鍵還原的話還要先解隱藏..
一句話..
這個 Script 還真是方便..
作者: Climbing    时间: 2004-3-20 23:19
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
If bQuit = 0 Then
               //選中最後的未分配空間(剛才空出的)
               Select Unallocated After Selected Partition
               //在硬盤最後創建指定大小的分區,當然,你可以根據實際情況修改卷標。
               Create /FS=FAT32 /LABEL="IBM_SERVICE"
               // 將這個分區轉換為主分區
               Convert To Primary
              //不設為隱藏          ←我建议将指令放在这个位置比较好
              UnHide
       End If
End IF
在PM的图形界面中进行操作时,新建一个主分区默认是隐藏的,但我在虚拟机中使用PM Pro脚本自动建立的主分区却不是这样(当然,也没有在实际机器中测试过)。
另外,Server版的Windows下不能运行PM的问题确实是一个问题,有这种情况的用户,建议你在运行之前将你的boot.ini改一个名。
作者: 日落时分    时间: 2004-3-22 00:41
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
好,辛苦了。
作者: delphi007    时间: 2004-3-26 21:22
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
谢谢,先down下来,以后有机会再试试
作者: zlgs    时间: 2004-3-27 11:43
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
很好~~
好好学习一下
作者: hb9685    时间: 2004-3-27 19:26
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
感谢
作者: dzy    时间: 2004-4-5 19:43
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
[UploadFile=34_940_30.gif]顶!
用一键恢复的朋友,看看收益非浅!!
作者: flycloudy    时间: 2004-4-8 17:45
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
厉害,又学了一招
作者: 不能    时间: 2004-4-12 21:22
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
好!
作者: 咖啡泡泡    时间: 2004-4-12 23:34
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
看不懂啊。。。不过支持。。
作者: baodl    时间: 2004-4-20 13:26
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
程序太好了,可以在DOS下做到创建F11分区,传送系统文件,做C盘GHOST文件一条龙,完全不用手动来操作,呵呵,想他人所想,climbing,佩服。
作者: yuanceng    时间: 2004-4-20 17:30
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
强烈的支持
作者: gtc    时间: 2004-4-27 13:58
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
bucuo!zhichi!
作者: sunreak    时间: 2004-4-28 20:34
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
真是大开眼界
作者: hellen999    时间: 2004-4-30 01:07
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
真是好贴!
learn and learn
作者: sak47    时间: 2004-4-30 07:26
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
好贴!!
作者: kingshui    时间: 2004-4-30 11:12
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
真的很不错
不过现在没有时间去试了
五一要回家了
作者: jyssysz    时间: 2004-5-1 14:19
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
没有顶一下吗????
好贴不能这样沉下去!!!
作者: 猪首    时间: 2004-5-2 00:46
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
原来是这样的,先收藏了。
作者: dosoem    时间: 2004-5-2 02:05
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
支持,辛苦了!加油!
謝謝分享,再接再厲!
作者: hulala186    时间: 2004-5-26 00:13
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
climbing ,我们在自己的电脑上面如何实现ibm的一键还原。
又相关资料吗?有的话,发到我得email里来:hulala186@yahoo.com.cn
我只是记得在电脑报上看过一次后,在也没有从其他资料上看到过介绍了,
破巧今天我学无忧启动碰上了。希望你能帮助我谢谢。
记得发到我得email里来。
作者: xzc999    时间: 2004-7-10 23:06
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
无敌老大!支持,感谢  

作者: yaosn    时间: 2004-7-11 00:49
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
有些软件无法下载,能不能重新提供链接?
作者: wjgyz740526    时间: 2004-7-11 17:49
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
"Server版的Windows下不能运行PM的问题确实是一个问题,有这种情况的用户,建议你在运行之前将你的boot.ini改一个名"
其实完全可以编写一个批处理命令,先判断是否为Server版的Windows如有则改名,然后再运行PQ,PQ结束了在改回来。否则就直接运行PQ
作者: hb9685    时间: 2004-7-23 16:43
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
ding
作者: wwwmmm    时间: 2004-7-23 17:17
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
ok
作者: cs99619    时间: 2004-8-8 06:05
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
请问其它的结构语句是用什么写的?
if ..... then

endif
作者: dddddd    时间: 2004-8-23 12:25
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
太吓人了!!  搞维护的能搞成这样,也该生产软件了。
作者: 友谊    时间: 2004-8-23 14:33
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
支持
作者: hywangwei    时间: 2004-9-8 22:45
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
[这个贴子最后由hywangwei在 2004/09/09 00:01am 第 1 次编辑]

老大,看了一下还是不懂,这些脚本文件我用什么程序写呀。有那位老大帮帮忙,教小弟一下,小弟我没学过编程啊。

:em04:  :em04:  :em02:  :em02:  :em02:  :em04:
作者: lyysh    时间: 2004-9-16 18:35
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
好啊,好!
作者: lengxie119    时间: 2004-9-16 22:48
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
不管能不能用,先顶了
作者: zqy333    时间: 2004-9-17 15:52
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
支持! 谢谢!
作者: sj119119    时间: 2004-9-25 17:02
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
对老大的钻研精神实在是佩服,顶了

作者: qjgdwqj    时间: 2004-10-12 16:29
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
不错!!呵呵!
作者: sexuu    时间: 2005-3-1 09:37
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
这么好的帖子, 为什么顶的人这么少,心酸啊
作者: sesmoonboy    时间: 2005-3-1 11:52
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
好东西啊!!!
作者: qhpwrp    时间: 2005-3-1 18:49
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
万分感谢

作者: lone1861    时间: 2005-3-2 16:14
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
谢谢你的文章 太使用了
作者: chinalong    时间: 2005-3-2 16:53
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
好兄弟,我支持!
作者: oo1ooa    时间: 2005-3-3 10:19
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
能不能用啊,有哪位试过没??

作者: wuyou001    时间: 2005-3-3 12:23
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
收了回头学习,谢谢提供!
作者: wolfteeth    时间: 2005-3-4 11:21
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
高手,顶一下,但我不会用这种麻烦的东西。
作者: studyczb    时间: 2005-3-8 22:12
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
谢谢石头兄的文章,努力实现中。。。。。。。
作者: 阿瞒    时间: 2005-3-8 22:47
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
牛!
作者: studyczb    时间: 2005-3-26 12:26
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
再来顶一次!!!
作者: IPU    时间: 2005-3-30 22:55
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
各位高手,以下PQ的脚本要怎么编呢?哪位能帮帮小弟子!
我想用PQ在一个硬盘中自动分区,如果大于40G,则第一个主分区8G,卷标为SYSTEM; 再建立一个5G的主分区在磁盘的最后(做一键还原的备份分区,卷标为IBM_SERVICE),剩下的平均分成三个逻辑分区(卷标分别为:TOOLS,MP3,GAMES);
如果小于40G,如果大于40G,则第一个主分区6G,卷标为SYSTEM; 再建立一个3G的主分区在磁盘的最后(做一键还原的备份分区,卷标为IBM_SERVICE),剩下的平均分成三个逻辑分区(卷标分别为:TOOLS,MP3,GAMES)。
请各位高手提示!万分感激!

作者: yysunlight    时间: 2005-4-9 19:34
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
请问怎样才能实现在引导系统之前按一键就能运行一个指定的程序呢?比如说一键恢复就是按F10键就执行还原程序的。
作者: yysunlight    时间: 2005-4-9 20:16
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
我刚试用了一下下,但是对我的硬盘好像无效。付上调试结果,请指教是什么原因。
PowerQuest PartitionInfo -- DOS engine edition.
Date Generated: 04/09/2005 19:55:22
CPU Vendor: "GenuineIntel"
CPU Signature: 00000f29    CPU Features bfebfbff

*****************************  BOOT.INI  *****************************
[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=Microsoft Windows XP Professional /fastdetect
C:\BOOT\BOOTDISK.bin="由虚拟启动软盘启动"
****************************  END PREPEND  ***************************
BiosExtensions: 0x3000 Subsets (0x00000005): Access EDD
EGeo 0x0000 16383 16 63 29336832 0 512
Disk Geometry requires extended BIOS support
============================================================================
Disk 0:  21166 Cylinders, 33 Heads, 42 Sectors/Track.
BiosExtensions: 0x3000 Subsets (0x00000005): Access EDD
The BIOS supports INT 13h extensions for this drive.
============================ Partition Tables ==============================
Partition          -----Begin----      ------End-----     Start     Num
Sector     &#35; Boot   Cyl Head Sect  FS   Cyl Head Sect     Sect      Sects
---------- - ----  ---- ---- ----  --  ---- ---- ----  ---------- ----------
         0 0 80   [1023    2   29] 0C [1023   32   42]    2123464   16386566 [Large Drive Placeholders]
                   1532    2   29     13354   32   42                         Actual Values
Error &#35;105: Partition didn';t begin on head boundary.
ucBeginHead expected to be 0 or 1, not 2.
Error &#35;106: Partition didn';t begin on head boundary.
  ucBeginSector expected to be 1, not 29.

==================================================================================
Disk 0:  14324.3 Megabytes
============================= Partition Information ==============================
Volume        Partition                         Partition        Start     Total
Letter:Label  Type            Status   Size MB  Sector     &#35;     Sector    Sectors
------------- --------------- -------- -------- ---------- - ---------- ----------
              Type 00         Pri       14324.3        105 0          0   29336076

}
Exiting enStartEngine...  Return value: 0  Time = 0:00
--------------------
--------------------
pq.ps
--------------------
Syntax check
Syntax check complete: 0 errors found, 0 warnings found
--------------------
Playing script
--------------------
Script command: Dim PriSize
--------------------
Script command: PriSize=2048
    PriSize=2048
--------------------
Script command: Set Default Bad Sector Test State Off
--------------------
Script command: Select Disk 1
--------------------
Script command: Dim PriNum
--------------------
Script command: Dim i
--------------------
Script command: i=1
    i=1
--------------------
Script command: PriNum=0
    PriNum=0
--------------------
Script command: Select Partition First
--------------------
Script command: Do While i<GetTotalPartitions
--------------------
Script command: If IsPrimary Then
--------------------
Script command: PriNum=PriNum+1
    PriNum=1
--------------------
Script command: End If
--------------------
Script command: Dim ExtNum
--------------------
Script command: ExtNum=GetPartitionNumber Extended
    ExtNum=0
--------------------
Script command: If ExtNum<>0 Then
--------------------
Script command: End If
--------------------
Script command: If PriNum<4 Then
--------------------
Script command: Select Partition Last
--------------------
Script command: Resize Larger Max
0 operations pending
--------------------
Script command: Dim bQuit
--------------------
Script command: bQuit=0
    bQuit=0
--------------------
Script command: If GetUnusedAmount>=PriSize Then
--------------------
Script command: Resize Space After PriSize
Error &#35;1830
Scripting halted by error.
[Script error(60)]: Unable to complete command
Script stopped
Entering enStopEngine(...)  ID:193  File:Engine.cpp  Line:381
{
DbgMgr->Uninit

作者: dongdao477    时间: 2005-4-11 12:43
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
看不懂.
不过顶上去让大虾解答
作者: wwj402    时间: 2005-11-2 11:50
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
强!!!
作者: xxxsss    时间: 2006-2-17 22:48
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
谢谢谢谢
作者: zhoudufeng    时间: 2006-2-24 18:35
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
厉害,强烈顶!
作者: 22578    时间: 2006-2-25 21:58
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
支持
作者: chen463    时间: 2006-5-6 19:42
标题: [原创]DOS下实现硬盘自动无损数据重新分区的方法
这样的好文章,怎么可能写成呢?赞叹!让我受益良多,感恩
我体悟好几天耶!试验了N次,终于改成自己想要用的方式,谢谢楼主无私教授。

作者: 双响炮    时间: 2006-6-14 22:46
一直觉得你不顶不行,不管在哪里
作者: 李其    时间: 2006-7-16 16:29
好的文章或东西就要拿出来大家讨论和共享。谢谢楼主。
作者: ygft    时间: 2006-7-16 21:47
学了一手老大。
作者: ghpy    时间: 2006-7-19 14:35
标题: 写得很精典,但是怎么不能执行呢?要怎么操作呢?
写得很精典,但是怎么不能执行呢?要怎么操作呢?
已经有建立pq.pqs这个文件了。

pqmagic /cmd=pq.pqs
这个不能执行


pqmagic /arg=pq.pqs
也是不能执行啊。


要怎么操作呢?
高手,请指教。
作者: Climbing    时间: 2006-7-19 15:38
Re ghpy:

请仔细看顶楼的帖子,我肯定你没有仔细看。

另外,不是“精典”,我想应该是“经典”吧?

又,顶楼下载链接如何失效,请将链接中的Climbing.minidns.net换为:nufans.net。
作者: 老毛桃    时间: 2006-7-19 15:52
原帖由 Climbing 于 2006-7-19 15:38 发表
又,顶楼下载链接如何失效,请将链接中的Climbing.minidns.net换为:nufans.net。

嗯,下载链接已经修改
作者: ghpy    时间: 2006-7-20 16:26
标题: 试了。怎么不能执行啊。
试了。怎么不能执行啊。

pqmagic /cmd=pq.pqs
这个不能执行啊。
pqmagic /arg=pq.pqs
这个也是不行啊。
要怎么做才可以运行呢?

请高手指教啊。。。
作者: chen463    时间: 2006-7-26 00:44
原帖由 ghpy 于 2006-7-20 04:26 PM 发表
试了。怎么不能执行啊。

pqmagic /cmd=pq.pqs
这个不能执行啊。
pqmagic /arg=pq.pqs
这个也是不行啊。
要怎么做才可以运行呢?

请高手指教啊。。。

pqmagic /cmd=pq.pqs :victory:
作者: gyjyxj    时间: 2006-8-6 13:14
楼主的精神值得学习
作者: guies    时间: 2006-9-7 22:46
好帖沈好久啰..
发现用 SMAGIC 如果最后一个分区是 NTFS 的话,就会失败..
但用 PQMAGIC ,当系统是 Server 的话,也不能使用
真是两难阿~~~

SMAGIC.GIF (15.99 KB, 下载次数: 123)

SMAGIC.GIF

作者: 老毛桃    时间: 2006-9-8 10:13
原帖由 guies 于 2006-9-7 22:46 发表
但用 PQMAGIC ,当系统是 Server 的话,也不能使用
真是两难阿~~~

PQMAGIC 是可以在 Server 系统上运行的。只要修改 Boot.ini 文件,将里面的 “=” 换成 “ = ” (注意等于号前后都加上一个空格)即可。
作者: guies    时间: 2006-9-8 10:39
原帖由 老毛桃 于 2006-9-8 10:13 AM 发表

PQMAGIC 是可以在 Server 系统上运行的。只要修改 Boot.ini 文件,将里面的 “=” 换成 “ = ” (注意等于号前后都加上一个空格)即可。


所以我在我的一键还原上多放了个 editbini.exe 程序,以备不时之需...
说真的还真不知在 dos 下怎么用批处理判断第一个 partition 里的 boot.ini ,而且还是 ntfs 格式
来让它能够在 Server OS 下也能全自动..
作者: laohuya2000    时间: 2006-9-9 12:48
无敌老大!支持,感谢
作者: dyren    时间: 2006-9-10 15:05
太难了,等我成了老鸟再做吧!
看老鸟们真累呀,光打字就得半小时。还是做菜鸟舒服,你们做好程序我就拿来用!
作者: aibo    时间: 2006-10-5 23:12
学习了。没有想到在龙帝国找恢复软件。最后又链接回来了。
作者: chenbaker    时间: 2006-10-13 14:08
实在是强
作者: lfdjssz    时间: 2006-10-13 20:40
强 人................................
作者: zhbin680    时间: 2006-11-20 17:15
无语!楼主是我等的榜样!!
作者: whitecloud    时间: 2006-11-20 21:07
这真是个强中贴呀...
支持你...
作者: ilzero    时间: 2006-11-27 23:38
下面引用由浪客游侠在 2004/03/16 09:04am 发表的内容:
简单的事情让你说的那么复杂啊~!
不过。我支持~!!!

=_=|||    不做不知道,一做吓一跳。
作者: q8q8feng    时间: 2006-11-28 00:17
多好的帖子 我得认真学习了
作者: 咖啡泡泡    时间: 2006-11-28 01:30
无敌老大!支持,感谢




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3