中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 对 GHOST 用户参数的 借鉴和思考...
作者:
标题: 对 GHOST 用户参数的 借鉴和思考... 上一主题 | 下一主题
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『楼 主』:  对 GHOST 用户参数的 借鉴和思考...

自己在写硬盘读写器的过程中,借鉴了GHOST的表示硬盘和分区的参数,很简洁
比如 : 1:2...
但是,同时觉得GHOST 的 其他参数 比如 SRC,DST,CLONE,PDUMP,PRESTORE,SPLIT等等,是不是有点背离这种精神了 ..

看到一些编程书(有关用户界面)介绍设计程序应该不要让用户涉及到程序内部的东西,诸如读取数据(READ模式),写模式(WRITE),什么类型,源数据(SRC),目标数据(TARGET),倾倒(DUMP),恢复(RESTORE)等等,因为这些是程序员的事,程序员写程序往往不由自主的把这些东西带出来,这就不是充分为用户考虑,应该动脑筋设计出不带程序痕迹而易用(user friendly)...
当然,也得有个简单的约定(比如,1,2,代表硬盘,1:2 代表硬盘的分区....)

刚刚设想自己刚写的迷你硬盘读写器的参数采用什么方式?
为作到既简洁又有丰富的功能(当然是就我程序中含有的功能..)

初步设计如下参数模式,供参考..

除了TO之外,不见一个程序员的术语...


1
程序 1 TO 2
自然就是把硬盘1复制到硬盘2,无须源硬盘和目标硬盘,自然是采用左是源,右是目标,符合一般人的思维习惯.甚至连 TO 不要也是可以的...当然有了,思维更清晰

4(多硬盘)
程序 1,2 TO 3

5(加入分区功能)
程序 1:2 TO 2:3
把硬盘1的分区2复制到硬盘2的分区3

6(支持盘符)
程序 E: TO 2:3

7
程序 C: TO G:


支持镜象文件

8
程序 1 TO (1)
把硬盘1装入镜象文件1

9
程序 1 TO (1=C)
把硬盘1装入镜象文件1,压缩,默认级别

10
程序 1 TO (1=C9)
把硬盘1装入镜象文件1,压缩,级别9

11
程序 1 TO (1=C9=K)
把硬盘1装入镜象文件1,压缩,级别9,加密

12
程序 1 TO (1=C9=K=V)
把硬盘1装入镜象文件1,压缩,级别9,加密,默认分卷(1000MB)

12
程序 1 TO (1=C9=K=V1500)
把硬盘1装入镜象文件1,压缩,级别9,加密,分卷(1500MB)

12
程序 1 TO (1=C9=K=V1500=E)
把硬盘1装入镜象文件1,压缩,级别9,加密,分卷(1500MB),每个分卷都要加密(与第一个文件一样的密码)

12
程序 1 TO (1=C9=K=V1500=E?)
把硬盘1装入镜象文件1,压缩,级别9,加密,分卷(1500MB),每个分卷都要加密(每个文件都要提示用户输入不同密码)

13(根据镜象文件恢复)
程序 (1) TO 1
把镜象文件1恢复到硬盘1,自动检查是否是压缩,但不自动检查有无分卷

14(根据镜象文件恢复)
程序 (1=V) TO 1
把镜象文件1恢复到硬盘1,自动检查是否是压缩,
自动检查分卷,如无,则提示用户输入分卷名(如果用户后来改名了)

如果需要丰富功能的:
综合:

程序 1:2,2:3,3:4 TO 3:2,(G:\BACK.Z=C9=K=V1500=E?)


如果需要指定扇区位置,并指定操作扇区数的 :
(- 表示要操作的开始扇区位置
+ 表示要操作的总扇区数)

1
程序 1-100+1000 TO 2
从第100扇区开始把硬盘1的1000扇区 复制到硬盘的0扇区

2
程序 1-100+1000 TO 2-200

3
程序 1:2-100+1000 TO 2:3-300

4
程序 1:2+1000,E:-300 TO G:-200,2:4-500

5
程序 1:2+1000,E:-300 TO G:-200,(H:\BACK.Z=C9=K=V500=E?)+1000,2:4-500
把硬盘1的分区2, 1000扇区 和E:盘的第300扇区,全部 装入到G:盘的200扇区处(全部剩下扇区)和文件H:\BACK.Z (1000扇区,指未压缩)和硬盘2的分区4的500扇区处.

...

我的迷你硬盘读写器将尝试采用这个参数模式....

[ Last edited by GOTOmsdos on 2006-8-19 at 21:46 ]

2006-8-19 21:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wang6610
银牌会员




积分 1246
发帖 488
注册 2003-11-11
状态 离线
『第 2 楼』:  

思路很好,越简单越需要考虑严谨周密。


避免矛盾和重复。

[ Last edited by wang6610 on 2006-8-19 at 22:41 ]

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

DOS一根葱


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

1:支持盘符!DOS下的盘符?还是win下的?是否考虑放弃以盘符方式备份,毕竟vista的诞生还会出现新的格式,有个ntfs盘符交错已经够乱了,不如刚开始设计时就不考虑盘符支持。

2:如上参数都是数字是否会出现误操作?是否考虑备份恢复操作加入核心参数?如备份用/B 恢复用/R 扇区操作/F(字母可选)这样也可以避免一些误操作。另外1 TO (1=C9=K=V1500=E) 的=符号是否考虑改用已习惯的 - 符号。

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

C++启程者


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

我原来的参数是

程序

1
-r|w -d1 -d2
-r|w -d1 -s100 -d2
-r|w -d1 -s100 -n1000 -d2
-r|w -d1 -s100 -n1000 -d2 -s200

2
-r|w -d1 -p1 -d2 -p2
-r|w -d1 -p1 -s100 -d2 -p2
-r|w -d1 -p1 -s100 -n1000 -d2 -p2 -s300

3
-r|w -d1 -ffile
-r|w -d1 -p1 -ffile.z -c9 -k -v1000 -e?

....
现在,感觉很烦.

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

DOS一根葱


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

再来一个有点异想天开的想法
程序 1:2,2:3,3:4 TO 3:2,(?:\BACK.Z=C9=K=V1500=E?)

?:\BACK.Z 这个?类似find的功能

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

C++启程者


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

TO fastslz
1
因为是DOS程序,盘符自然是DOS盘符(FAT12,FAT16,FAT32),如果要处理非FAT分区,程序有选项,可显示各种形式的分区表项,供用户操作前查看的....支持全部分区

2
关于误操作的问题,这个不用担心的,硬盘工具都是慎重又慎重的,不会一次定乾坤的
程序会告诉用户一些用户输入的参数信息,等用户确认的,如果是写盘,还多一次写确认.

我的设想中的 TO 这个唯一的关键字我觉得已经足够了,他清楚的表明了源和目标的关系.程序需要的种种参数已完全在左右的输入中了.
你提出的,如备份用/B 恢复用/R 扇区操作/F, 这些,,固然有他的用处,但是,与我的本帖的初衷(简洁,高效)就相悖了, 而且 在技术上,"备份" "恢复"的关系已经在TO中得到了说明,如果是 左--磁盘 右--文件 ,这自然是叫"备份"; 反过来, 自然就是叫"恢复".用户心中应该是很清楚的. 如果,硬要说出这些概念,有些不懂电脑的用户到反而会不太清楚这些概念了..

在GHOST用户界面 中的

DISK TO DISK,
DISK TO IMAGE
IMAGE TO DISK

PARTITION TO PARTITION
PARTITION TO IMAGE
IMAGE TO PARTITION

也就是这个道理吧?
(他没有说,在此处 备份,在此处恢复...)

这也可能是思维习惯的问题..

3
至于 = 符号,我原先也考虑都用 - 号,但是 用户要输入含有 - 号 的文件名怎么办?
我也考虑过用 / * 等,最后还是觉得 = 好,它也不要同时按下 SHIFT,直接可以打出来,也醒目....

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

C++启程者


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

(?:\BACK.Z=C9=K=V1500=E?)
可以啊!

不过,要有一定的用处啊!
你要它表示什么功能用处呢?

嘿嘿
C语言中 著名的唯一的三木运算式 就是这样的:
XXX ? A : B
意思是: XXX 是真的吗? 如果是真的 就 A 否则就 B

哇! 多简洁! 既简洁清楚又有美感..

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

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

C++启程者


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

那些老的优秀的 DOS LINUX 程序员 都有很多既有个性又简洁丰富功能的参数符号呢!

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

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

DOS一根葱


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

?:\BACK.Z
这么说吧,我是希望它自动去查找,如同命令
FOR %%A IN (1:2 1:3 1:4 1:5 1:6 1:7 1:8 1:9 1:10 2:1 2:2 2:3 2:4 2:5 2:6 2:7 2:8 2:9 2:10 3:1 3:2 3:3 3:4 3:5 3:6 3:7 3:8 3:9 3:10 4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:9 4:10) DO  %%A:\BACK.Z TO 1:1
即同时执行1:2至4:10而不会因为执行
1:2:\BACK.Z TO 1:1
找不到1:2:\BACK.Z后因为错误跳出而继续执行
1:3:\BACK.Z TO 1:1
直到执行完任何一个可能出现的数字,类似grub参数find --set-root /menu.lst上面(1:2 1:3 1:4 1:5 1:6 1:7 1:8 1:9 1:10 2:1 2:2 2:3 2:4 2:5 2:6 2:7 2:8 2:9 2:10 3:1 3:2 3:3 3:4 3:5 3:6 3:7 3:8 3:9 3:10 4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:9 4:10)等于4个硬盘每个暂定可能会出现10个分区

[ Last edited by fastslz on 2006-8-20 at 00:38 ]

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

C++启程者


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

哦,这个意思..
你的意思是 当(?:\BACK.Z=C9=K=V1500=E?) 在左边时吧?
就是源文件.

因为是DOS程序, 所以,寻找FAT格式的分区还是可以考虑的,其他的自然就做不到了啊

不过,思路挺有意思

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

DOS一根葱


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

这样就完美了,根本就不用考验盘符问题了
关于参数符号我觉的文件名中 , 出现几率少于 - 也算是习惯之内,
而=我在这里随便说说啊!在ghost参数中我习惯自定义压缩级别变量
set 压缩级别=-z2
而在你的在参数里就变成错误语法了
set 压缩级别==c9
虽然可以用set 压缩级别=c9但这也是我发现=符号不适合的一个原因,仅做参考

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

DOS一根葱


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

其实恢复系统比备份系统更容易错,这点我想大家在日常ghost中经常遇到找不到某个.gho恢复系统失败。我也受grub的find启发,
grub命令行下find --set-root /system.gho试试
grub确实做到了只可惜不能打印内容到文件

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

C++启程者


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

1 - =
当然,这个符号是无所谓的,如果有更好的可以考虑换一换
但是,键盘上就是那么多可用的符号,其他的都觉得不合适
你建议的仍用 - ,可是,我还是觉得文件名还是经常用它的,
在LINUX中,全部都是用 - 的,在WIN/DOS中,也很常见的
一般都是 XXX-A-1, YYY-2.等等,用来区别的
还有, _ 也是 合法的文件名,有人也很喜欢用的,尤其是程序员出身的,
用它分割起来使文件名比 - 更清楚
至于你说的 = 与== 混淆, 这个其实,关系不大,因为毕竟程序中的 符号 用的是不多的
就那么几次...不至于引起很大的混淆..(而且都限定在括号中)

2 Z C
这个是可以考虑通用习惯的.

2006-8-20 01:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
johnsonlam
银牌会员

阿林


积分 1410
发帖 497
注册 2004-6-28
来自 九龍,香港
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by GOTOmsdos at 2006-8-19 10:49 PM:
1
-r|w -d1 -d2
-r|w -d1 -s100 -d2
-r|w -d1 -s100 -n1000 -d2
-r|w -d1 -s100 -n1000 -d2 -s200

2
-r|w -d1 -p1 -d2 -p2
-r|w -d1 -p1 -s100 -d2 -p2
-r|w -d1 ...


借 镜 LAME 的 作 法 ...

--preset 1
--preset 2




我 的 網 站 - http://optimizr.dyndns.org
2006-9-1 14:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: