中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 全面增强《磁盘/系统备份/文件/压缩》集于一身 TOdisk
« [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... [13] »
作者:
标题: 全面增强《磁盘/系统备份/文件/压缩》集于一身 TOdisk 上一主题 | 下一主题
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『楼 主』:  全面增强《磁盘/系统备份/文件/压缩》集于一身 TOdisk

有时用GHOST备份失败,可能文件出了什么问题。。。
就自己写了个程序 TOdisk 成功地备份了。。
用扇区方式备份硬盘或分区或任意扇区。。。
支持压缩和分卷,扩展分区,多任务。。。等等。。

多谢 中国DOS联盟的johnsonlam兄(香港),fastslz兄  等等热心网友, ddcopy作者李治先生和 老外Lucho的帮助和支持!

欢迎访问 http://www.cn-dos.nethttp://johnson.tmfc.net/dos/index.html 进行DOS交流

说明如下:

硬盘/分区/扇区 =freE=(自由) 备份/恢复器 ==TOdisk ==(扇区模式)
版本:1.3 alpha
运行环境: MS-DOS / Win9xMS-DOS窗口  (如加载UDMA驱动,可能运行反常)

TOdisk version 1.3 Alpha Copyright (C) 2006-2007 by GOTOmsdos, 2007-1-13
Email: tdaim@sina.com
语法:
      <执行模式>
TOdisk 源串1[,源串n...] TO 目标串1[,目标串n...] [-[[d|p][q][m][n][i|[[ir][iw]]]]]

      <查看模式>
TOdisk [-D[n]|-P[[noz|noh|nozh|fn|f|l]|[n:n|A:]]]

                                   <执行模式>

   源/目标  串: (硬盘串, 分区串, DOS盘符串, 镜象文件串)
1, 硬盘     串  >> 1 or 2...n
2, 分区     串  >> 1:2 or 2:3...n:n
3, DOS盘符  串  >> C: or D:... Z:
4, 镜象文件 串  >>
   镜象文件参数:
     Cn - C : (compress)压缩
          n : 压缩级别(1-9,6 可能是强度和速度的最佳平衡点,如没有级别,则取默认的6)
      K - K : key 压缩密码,需要提示输入密码
     Vn - V : (volume) 分卷
          n : 每卷大小的MBs(从1到2047) 如果没有指定,默认是2047
     E? - E : (every)每卷的压缩密码跟第一卷的一样
          ? : 每卷都要提示输入压缩密码

  --A
  是目标时:
  (c:\image.to) <不压缩,不分卷>
  (c:\image.to=Vn) <不压缩,分卷>
  (c:\image.toz=Cn)  <压缩,不要密码,不分卷>
  (c:\image.toz=Cn=K)  <压缩,要提示输入密码,不分卷>
  (c:\image.toz=Cn=K=Vn)  <压缩,要提示输入密码,分卷,只有第一卷(即第一个镜象文件)有密码>
  (c:\image.toz=Cn=K=Vn=E)  <压缩,要提示输入密码,分卷,每卷的密码跟第一卷的一样>
  (c:\image.toz=Cn=K=Vn=E?)  <压缩,要提示输入密码,分卷,每卷都要提示输入密码>
  例子:
  (g:\image.toz=c7=k=v1000=e?)

(注意:在多任务中,当镜象文件串是目标时,只能位于最后一个(所以,也只能有一个)
例子:
        合法:
              1:1 TO 2:3,3:4,(g:\image.toz=c=v)
              1:1,2:2,3:3 TO 2:3,3:4,(g:\image.toz=c=v)
              
              1:1 TO 2:3,(g:\image.toz=c=v)+10000,3:4
              1:1,2:2,3:3 TO 2:3,(g:\image.toz=c=v)+20000,3:4
              1:1,3:4,4:4 TO 2:3,(f:\image1.toz=c=v)+30000,(g:\image2.toz=c=v)

              1:1,2:2,3:3 TO 2:3,(g:\image.toz=c=v),3:4 -p
              1:1,3:4,4:4 TO 2:3,(f:\image1.toz=c=v),(g:\image2.toz=c=v) -p
        不合法 1:
              1:1 TO 2:3,(g:\image.toz=c=v),3:4
              1:1,2:2,3:3 TO 2:3,(g:\image.toz=c=v),3:4
              (自由模式,既不是最后一个也没指定要操作的扇区数<用'+'>)
        不合法 2:
              1:1,3:4,4:4 TO 2:3,(f:\image1.toz=c=v),(g:\image2.toz=c=v)
              (自由模式,既超过了一个镜象文件串也没为最后一个之前的镜象文件串指定要操作的扇区数<用'+'>)
)

  --B
  是源时(会自动判断是否是压缩,所以,即使以to为后缀的压缩文件也能被识别为压缩文件):
  (c:\image.toz) <不自动搜索分卷>
  (c:\image.toz=V) <自动搜索分卷>

<镜象文件名,如不压缩建议后缀为to, 如压缩建议后缀为toz, 以免跟其他文件名混淆,不过程序并不强制这样)

在源/目标串中
- : 指定要操作的起始扇区
+ : 指定要操作的扇区数
但在镜象文件串中不被允许
例子:
    1-5000
    1:2+5000
    D:-5000+10000
    (g:\image.toz)+3000

源/目标串开关:
       =q : quiet 安静(无询问)
       =m : mute 沉默(无信息显示)
       =i : ignore 忽略(忽略读写错误,但对镜象文件串无效)
       =n : next 下一个(如果遇到致命错误,就继续下一个任务)
例子:
   1:2=q=m,3:4 TO 4:1=i=n,(file=c)=q=m

如果源/目标串中有 - + 操作符,那么
用在源/目标串中的以上的参数( i, q,m, n) 必须放在 - 或 + 的后面:(当然,在 匹配模式 -d,
-p 中,本来就不能有- + 操作符,自然就不存在这个问题 )
例子:
   1:2-300+400=q=m,3:4 TO 4:1=i=n,(file=c)+500=q=m


全局开关 1 (模式开关):

  --A
  (匹配模式)   
  -d|p  硬盘|分区 子模式
  在匹配模式中,源串和目标串的个数必须相等。此外,在分区模式中,如果目标串是分区,要更新分区ID)
  
  -d 硬盘模式例子:
          1,2 TO 3,4 -d
  等价于两次分开的操作:
          1 TO 3
          2 TO 4
  但不等价于
          1,2 TO 3,4
  除非1,3大小相同, 2,4大小相同

  -p 分区模式例子:
          1:2,4:3,2:2 TO 2:3,(d:\back.toz=c),4:5 -p
  等价于三次分开的操作:
          1:2 TO 2:3 -p
          4:3 TO (d:\back.toz=c)  
          2:2 TO 4:5 -p
(其中,由于第一和第三任务既是分区模式又是写分区<目标是分区不是镜象文件>,所以,即使在分开的操作中也要加上 -p, 表示要更新分区ID. )


  --B
  (自由模式)
  无 -d|p 开关
  在自由模式中,不要求源串和目标串的个数相等,前后任务之间的数据传输有相互接续的关系)

比如:

硬盘1 总扇区 1000
硬盘2 总扇区 2000
硬盘3 总扇区 1500
硬盘4 总扇区 3000
  
1,2 TO 3,4
这是自由模式,过程如下:

任务 1:
    硬盘1 传递给 硬盘3 1000个扇区 (硬盘1 完成任务,退出)
任务 2:
    硬盘2 传递给 硬盘3 1500-1000=500个扇区 (硬盘3 完成任务,退出)
任务 3:
    硬盘2 传递给 硬盘4 2000-500=1500 个扇区 (硬盘2 完成任务,退出)
程序便退出(因为 源和目标已经有一方完成了)

程序这样处理是考虑到 灵活性: 可能 使用者 可能并不确切的知道各个分区,硬盘的精确大小等等东西,但是又想完成前面的已经满足
条件的数据...

在自由模式中,不要求源串和目标串的个数相等,因为前后任务之间的数据传输有相互接续的关系
例如:
1 TO 2:3,3:4,4:5,(g:\file.to)

全局开关 2 :

    (下列位于命令行参数的后端,对全部任务有效):
           -q|quiet            : 安静(无询问)
           -m|mute             : 沉默(无信息显示)
           -i|ignore           : 忽略(忽略读和写错误,但对镜象文件串无效)
          -ir|ignorereaderror  : 忽略读错误
          -iw|ignorewriteerror : 忽略写错误         
           -n|next             : 下一个(如果遇到致命错误,就继续下一个任务)

例子:
    1:2,E: TO 2:3,(back.toz=c) -q -m -n -i

总的例子:

单任务:
1 TO 2
   复制硬盘1到硬盘2

1-100+1000 TO 2-200
   从硬盘1第100扇区复制到硬盘2的第200扇区,总共复制1000个扇区
1:2 TO 2:3
   复制硬盘1分区2到硬盘2分区3

1:2-200+1000 TO 2:3-300
   从硬盘1分区2第200扇区复制到硬盘2分区3的第300扇区,总共复制1000个扇区

1:2 TO (d:\backup.toz=c=k=v1000=e?)
   备份硬盘1分区2到镜象文件d:\backup.toz
   c     - 压缩级别6
   k     - 提示输入压缩密码
   v1000 - 分卷,每卷大小1000 MBs
   e?    - 每卷都要提示输入压缩密码

多任务:
    匹配模式:
    1:2,(h:\image.toz=v),2:3 TO (g:\image.toz=c=v),D:,3:2 -p
    自由模式:
    1:2,2:3-2345,3:4 TO 3:3-1234+300,4:1+3456,(i:\image.toz=c=v1000)

                                   <查看模式>

警告!!!
程序显示出的分区总表中的 DOS 盘符 是按照 DOS的盘符分配规律推测出的,不一定准确,尤其是场合性的挂载额外的驱动器

(如U盘,移动硬盘,虚拟盘等),仅作参考。但是表中显示的分区数字是没有问题的。

  -Dn 显示硬盘n的信息
  -P  显示全部硬盘全部分区的信息
        noz|nozero       : 不显示分区ID为0的分区
        noh|nohidden     : 不显示隐藏分区
       nozh|nozerohidden : 不显示分区ID为0的分区和隐藏分区
         fn|fatntfs      : 显示FAT和NTFS分区
          f|fat          : 显示FAT分区
          l|linux        : 显示LINUX分区

     n:n - 1:2 or 2:3 ...
     A:  - C:  or D:  ... Z:

例子:
  -d    : 显示全部硬盘
  -d2   : 显示硬盘2
  -p    : 显示全部硬盘全部分区
  -pfn  : 显示FAT和NTFS分区
  -p2:3 : 显示硬盘2分区3
  -pc:  : 显示 C:

*********
补充说明
*********

本程序采用的是扇区方式:

企业方式或者是极其重要的数据,应该采用扇区方式.

×××××××××××××××××××××
特别建议:
1
本程序很适合备份塞满文件的分区。
2
由于是扇区方式,所以可以备份任何文件系统的 分区(包括LINUX等等。。。)

不过,如果要备份到镜象文件,镜象文件所在分区只能是FAT/FAT32.
××××××××××××××××××××××××××××××

骨干开关:

一 匹配模式(包括 硬盘模式(-d)  和分区模式 (-p))

这种模式最常用,尤其是 分区模式.

这种模式由于处理的是 格式数据(硬盘和分区),所以,要匹配,至少是原数据块要小于目标数据块(在这种情况下,如果是分区模式,除了

把源分区的分区ID,和80/00是否活跃标志共两处,两个字节更新到目标分区外,目前不支持更新分区的大小,这涉及到搬移其后的所有分

区!,而且,对于一般用户,用的较少,一般都是哪里来哪里去的,起到一个备份恢复作用..)

由于是格式匹配模式,所以不允许使用 - 和 + 操作符.

匹配模式 的 源串和目标串的个数必须相等,否则警告退出

匹配模式支持镜象文件串.

除了分区模式要用源分区的分区ID和80/00更新目标分区的分区表外,

多任务的匹配模式 等价于自由模式的单任务的无 - + 的个数相同的一对一的串合。

二 自由模式(没有 -d 和 -p 参数)

这是精确到扇区的方式,可以任意指定要处理的起始扇区(前缀 是 - )和扇区操作数(前缀是 + , 小联想:

GRUB 也是用 + 表示要加载的数据块(扇区)的个数).

如:
1-100+200 表示 从硬盘1 的开始扇区100处执行 执行扇区数为200

镜象文件串也支持 + 操作符,但不支持 - 操作符.

技术上,是可以支持的,但是,要在文件的海量之处都作上记号,但这将极大的降低文件读取的速度

如:
(e:\back=c=v100)+1000 表示总共执行文件含有的总扇区的1000个扇区

如下非法:
(e:\back=c=v100)-1000 试图从文件含有扇区的第1000个扇区处执行,但非法.

这种模式对 RAW数据的恢复非常有用.也就是用尽了全部文件式数据恢复工具不能找到数据的情况下,就要借助于扇区模式了..

源/目标串

硬盘串:
1
执行为:
硬盘1 开始扇区0 处理扇区为整个硬盘的总扇区

分区串:
1:1
执行为:
硬盘1 分区1的开始扇区 处理扇区为分区1的总扇区

DOS盘符串:
C:
程序在分区表中找出其对应的分区,然后等同于分区串

镜象文件串
要用括号括起来()
完全的参数如下:
(d:\image=c=k=v1000=e?)  用 = 号 连接

第一为文件名(8.3格式)

Cn C(COMPRESS) 压缩, 9 为压缩级别,(1-9,6 可能是强度和速度的最佳平衡点,如没有级别,则取默认的6)

K (KEY),表示压缩文件有密码. 默认没有密码,有K,表示要有密码,那么当程序创建压缩镜象时,会要求用户输入密码,以便下次用文件

恢复到硬盘前,也要用户输入密码,这是安全需要.

(但是,仅有K,只会对第一个压缩文件要求密码,如果有分卷,不会后面的分卷要求密码)

Vn  V(Volume)表示有分卷功能, 在把硬盘数据存为分卷文件时,用户可以指定每个分卷的大小(以MB为单位 ),n 表示 MB,默认是2047

V1000 表示 以每 1000MB为一卷

(补充: 当文件参数在左边时,也就是源位置时, 如没有V, 程序将只处理一个文件,不擅自寻找是否有分卷(因为这样有可能自做主张

了. 如果 有 V, 将自动寻找其分卷,但只要给出 这个 V 即可,无需 n)

E?  E (Eevry)表示对每个压缩的分卷要求密码,如果没有 ? , 程序会把第一文件(母卷)的密码都自动写入后面的分卷中.如果有 ? 表

示 对每个压缩的分卷文件要求密码,并且 停下来,等待用户输入.

***********************************************
关于本程序采用的压缩库 zlib 和艰辛的寻找过程
***********************************************

1
试了,简单古老版的 LZ, LZW,HUFFMAN,LZHUF,LZSS,LZHARC, LZ77,LZARI,LZRW1等等,都不理想,太老,效率太低,只能用来教学。
2
看了 ARJ/UNARJ,有很多我不要的功能。。
3
曾定在 GZIP(BZIP2,基本差不多),很不错,也觉得有点适合我,压缩比和速度都很好,还有1-9的压缩比选项。。钻研了几天,
发现没有内存压缩,只有文件压缩,。。。
4
看到一个提示: zlib 支持内存压缩!
确定它了!
(ZLIB和GZIP,PNG都采用相同的引擎:基于LZ77和HUFFMAN的结合,当然和前面提到的古老原始的版本是不可同日而语的)

在此过程中,与DDCOPY作者李治联系了。取得了DDCOPY源么,对我有启发。。

不过,试了DDCOPY的压缩,不太理想,豪时长,压缩比低。因为他采用的压缩/解压的类较简单,就两个文件(用简单的LZSS,

胡颖卓编写的类,后来我也在网上看到了)

采用的压缩引擎是先进的最新版的 zlib-1.2.3 库(与GZIP,PNG图象用的同一个引擎),

压缩比和压缩速度很快,解压速度更快的离谱!

在WIN32 控制台程序中,压缩50MB,大约要20秒,压为了25MB。

解压只要大约3秒! 我*!

还有 压缩比的1-9选项(类似GHOST)。。。

ZLIB 压缩比相当高 采用 优化高效的 LZ77 和 HUFFMAN 结合,DEFLATE方式

而且速度与同类的压缩库相比要快的多! (如果比较压缩库,应该是与GHOST速度和压缩比差不多的.. )

*****************************
本程序的局限性和待增加的功能
*****************************

由于是DOS程序, 文件参数只支持FAT系列的盘符

计划加入处理指定的镜象中的第几硬盘和第几分区

***************
几个有用的开关
***************

1  i|ignore (还有 ir|ignorereaderror  iw|ignorewriteerror)
忽略磁盘的 读写错误, 这样的话,就不会因为较少的介质问题而终止整个程序。

2
q | quiet
不要提示,直接执行(但对诸如文件打不开等,仍然要跟你要文件名的。。等等)

3 n | next
当执行某个任务发现致命的错误时,不退出整个程序,继续执行下一个任务(但仍然根据前一个已完成的数据量对下一个任务的数据量作
更新)

4 m | mute
不显示信息

这几个开关的使用地点:
单个字母既可用于源/目标串中〈仅对其源/目标串的任务起作用〉,也可用于全局〈对全局起作用〉;而两个或两个以上的字符只能用于全局):

其中,i
a
用在硬盘/分区/DOS盘符串:(用 =连接)
如:
1=i TO 2 (忽略读硬盘1的错误,但不忽略硬盘2的写错误)
1:1 TO 2:3=i (忽略写硬盘2分区3的 写错误,但不忽略读硬盘1分区1的读错误)
e:=i TO 2:3=i (都忽略)

但是忽略开关(-i)不能用在镜象文件串中(因为文件不是设备。如果在读写文件的过程中DOS给出了错误,是不能忽略过的,程序会提示
你,重新输入文件名)

b
用在后面的独立之处(对全部任务起作用),等价于  -ir 和 -iw
如:
1:2,E: TO 2:3,(BACK.TOZ=C) -i(也可-ir -iw) (忽略全部任务的读错误和写错误)

q | quiet  (没有采用 y ,以免 跟 n 混同,以避免使用者误以为 y 表示不给提示,n 表示给提示。)

[ Last edited by GOTOmsdos on 2007-4-19 at 12:45 PM ]

附件 1: 修正更新版1 TOdisk-1.1a.rar (2006-9-15 11:41, 53.07 K, 下载附件所需积分 1 点 ,下载次数: 98)
附件 2: 修正更新版2 TOdisk-1.2a.rar (2006-9-15 11:42, 52.93 K, 下载附件所需积分 1 点 ,下载次数: 126)
附件 3: 最新版TODISK3.5.3.zip (2007-4-19 12:44, 85.86 K,下载次数: 248)
2006-8-29 19:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s2731
中级用户

dos联盟算卦的



积分 397
发帖 182
注册 2006-7-13
状态 离线
『第 2 楼』:  

最好动员论坛的用户都来测试下。

2006-8-29 20:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 3 楼』:  

已专门买了160GB硬盘,测试通过,目前尚未发现问题..
欢迎大家参与...

2006-8-29 20:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 4 楼』:  

汗...
我好惨啊...
刚才折腾了一阵,mydisk用了什么参数也记不清了。
现在C盘和H盘内容一样,容量也一样,(原C盘5G,H盘16G),用DEBUG备份下分区表,用Disk Genius重建分区表...存盘后再次重启.....让我眼冒金星发生了系统启动不了,6个分区还省3个(存放分区表备份文件G盘也不见了)急啊.....
还好有个WinXP Embedded, 启动WinXP Embedded居然认出了DOS下认不出已经错乱的FAT32分区,恢复分区表我的宝贝F: G出来了。
哎......Disk Genius靠不住啊
现在H盘看来没法还原了,不过那也不重要一些BT下来的电影。

2006-8-29 21:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 5 楼』:  

用 mydisk 作写盘操作时,除了 PTO模式在其相应的分区表上更新 FS 的 ID,一个字节和源分区的80或00,一个字节. 除此之外,不写分区表的重要记录的.

另, mydisk 的全部模式 都不会把大的原数据写到小的目标数据!
如果两盘大小不一样,只允许把小的数据块写到大的数据块...

你是用 MYDISK 写了 C或H盘吗? 如果是这样, C和H完全一样.就说明操作运行正常的
此次操作是正确的,不知道你后来怎么回事?

mydisk -P 可显示全部分区表的,你操作之前先看看,而且,程序中会给出具体操作提示的,写盘操做还多一次写盘警告的..

[ Last edited by GOTOmsdos on 2006-8-29 at 22:30 ]

2006-8-29 22:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 6 楼』:  

GOTOmsdos
1:1 to 1:6:\123.z和1:1 to 1:6\123.z哪个是正确的?

2006-8-29 22:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 7 楼』:  

哦!

带有文件的参数 要用括号括起来的,因为后面要带参数的

(很抱歉,文件参数只支持FAT格式系列,不支持NTFS..,其他参数就没有限制)....

所以,下面不支持
1:1 to 1:6:\123.z

只能
1:1 to (X:\123)

你可以看一下,程序的帮助,键入 mydisk 就可以了

[ Last edited by GOTOmsdos on 2006-8-29 at 22:37 ]

2006-8-29 22:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 8 楼』:  

关于处理模式和速度:
  GHOST 采用文件模式,即使只处理文件,不处理没有文件的数据,(所以,其实GHOST不是CLONE.是重整).这样,速度就快了,尤其是文件少的分区,但是,弱点是:用这种方式恢复的分区,不可能找回被删除的或丢失的文件,因为,没有合法文件的数据没有被保存.
MYdisk 是采用扇区方式,就是完全的复制,这样,虽然速度没有文件方式快,但是确是全真方式.即一模一样,这才是真正的 CLONE.

其实,企业方式或者是极其重要的数据,应该是采用扇区方式.

2006-8-29 22:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 9 楼』:  

55555
不会把1:1 to 1:6:\123.z当成1:1 to 1:6运行了吧。
帮助看了,6号分区也是FAT32,算自作聪明了(以ghost参数为例犯下了错)

你先试试,我现在暂且不做磁盘操作,再想想有什么办法把回原来的H盘。之后继续测试。

2006-8-29 22:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 10 楼』:  

哦,多谢参与测试...

程序会给出提示的,诸如 分区号,文件名等等,不知道你当时看了没有?
好象,不太可能,虽然,程序刚完成,对参数输入的检测还不强健,但是程序会把1:后面的字符,如果没有 - 和 + ,用 atoi()函数转换成整型数,  6:\123 这个字符串应该不会成功转换的吧..

[ Last edited by GOTOmsdos on 2006-8-29 at 23:29 ]

2006-8-29 23:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
本是
银牌会员





积分 2201
发帖 789
注册 2005-1-27
状态 离线
『第 11 楼』:  

RE: GotoMsDos:
建议:MyDisk改名为TrueDiskClone(磁盘全真克隆机),简称TDC(全克隆)。

RE: FastSLZ:
同情:动手磁盘前一定要先备份磁盘MBR/BOOT/PartTab(分区表)、还有重要数据!最好能有一块空闲的硬盘作全盘备份!
再好的软件也有BUGs!
再高的高手也有ERRORs!



my major is english----my love is dos----my teacher is the buddha----my friends--how about U
2006-8-30 11:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 12 楼』:  

磁盘全真克隆机?
嘿嘿,名字挺好听啊!

我起 MYdisk  主要考虑到简单易记, MY 感觉到亲切, 没有从功能上来起,那样的话,就要用几个词, 难免拗口,,
磁盘全真克隆机 名字挺好听,也有点霸气.  不过,从这个名字上, 好象给人只能处理磁盘间的复制. 其实,本程序远远不光是这个.(如果仅仅是磁盘间复制,其实只要几十行代码就解决了...难度不大的).

程序涉及到几方面:

磁盘
分区
镜象文件
压缩/解压缩
分卷的自动化和可变更性
任务的集合性

其实,本程序与其他程序最不一样的地方 是在:

灵活性
集合性
和参数的特别
...

2006-8-30 17:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 13 楼』:  

TO fastslz
已更正了 1:1 to 1:6:\123.z 的问题
现在会警告了
也改进了其他几个问题,重新上传了..

[ Last edited by GOTOmsdos on 2006-8-30 at 17:47 ]

2006-8-30 17:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 14 楼』:  

克隆过程显示有待改进,连续滚屏有点难受。
磁盘操作工具慎之又慎,对非法参数再加强一点。帮助文档尽可能详细点,虽然我不懂E文还是希望你添加E文帮助文档(虽然这里老外来光顾的很少但是香港朋友也很多)

对你的 MYdisk比较看好,继续努力......

[ Last edited by fastslz on 2006-8-31 at 11:32 ]

2006-8-31 11:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 15 楼』:  

多谢支持。。
因为是测试阶段,滚屏是由于显示运行过程中的 各变量的值造成的,随时都可以拿掉的
对参数的输入已作了基本的容错,正改进加强中。。

现正在加入几个有用的开关:
1  i|ignore  ir ignoreRead  iw|ignoreWrite
忽略磁盘的 读写错误, 这样的话,就不会因为较少的介质问题而终止整个程序。

2 q | quiet
不要提示,直接执行(但对诸如文件打不开等,仍然要跟你要文件名的。。等等)

3 n | next
当执行某个任务发现致命的错误时,不退出整个程序,继续执行下一个任务(但仍然根据前一个已完成的数据量对下一个任务的数据量作更新)

这三个参数的地点:

1
可在两种参数中给出

a
i 用在硬盘/分区/盘符参数组:(用 =连接)
如:
1=i to 2 (忽略读硬盘1的错误,但不忽略硬盘2的写错误)
1:1 to 2:3=i (忽略写硬盘2分区3的 写错误,但不忽略读硬盘1分区1的读错误)
e:=i to 2:3=i (都忽略)

但是忽略开关不能用在文件参数中(因为文件不是设备。如果在读写文件的过程中DOS给出了错误,是不能忽略过的,程序会提示你,重新输入文件名)

b -ir -iw 用在后面的独立之处(对全部任务起作用)

如:
1:2,E: to 2:3,(BACK.TOZ=C) -ir -iw (忽略全部任务的读错误和写错误)

2 q | quiet  (没有采用 y ,以免 跟后面的 n 混同,可能使使用者误以为 y 表示不给提示,n 表示给提示。。)

可以用在任何地方,包括文件参数组
如用在参数组(用 = 连接),仅对参数组起作用:
1:1=q,2:3 to 2:4,3:4

(用于文件参数组时,必须在()之后):
1:1,(FILE.Z=v)=q to 4:3,2:3

如用在后面的独立之处(用 - 连接),对全部任务起作用

3 n|next

可以用在任何地方,包括文件参数组
如用在参数组,仅对参数组起作用,
如用在后面的独立之处,对全部任务起作用

*********************
****************************
补充:

如果参数组中有 - + 操作符,那么
用在参数组中的以上的参数( i | ignore, q | quiet, n | next) 必须放在 - 或 + 的后面:(当然,在 匹配模式 dto/pto 中,本来就不能有- + 操作符,自然就不存在这个问题 )
1:1 to 2:3-100+200=i
1:1 to 2:3-100+200=q
1:1,2:3 to 2:3-100+200=n,3:4

另:
以上三对参数可以连用:
1:1,2:3 to 2:3-100+200=i=q=n,3:4

1:2,E: to 2:3,(BACK.TOZ=C) -ir -iw -q -n

****************************************
***************************************
为了充分与我刚确定的 程序名称 TOdisk 向一致, 现把 PTO/DTO的 P和D 移到后面,确保主干参数就是 TO

如下:
1 to 2 -d (硬盘匹配模式)
1:1 to 2:2 -p (分区匹配模式)

这样,这个TO就固定不变了..,成为名副其实的

TOdisk

[ Last edited by GOTOmsdos on 2006-8-31 at 16:15 ]

2006-8-31 15:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... [13] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: