中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 磁盘扇区读写、分区信息管理工具 Dsptw (2008.11.29 更新)
« [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] ... [38] »
作者:
标题: 磁盘扇区读写、分区信息管理工具 Dsptw (2008.11.29 更新) 上一主题 | 下一主题
19951001
高级用户

流落街头



积分 570
发帖 272
注册 2005-10-17
来自 北京
状态 离线
『第 361 楼』:  

to gmy:
   http://upload.cn-dos.net/img/363.rar
   你要的版本,我才上来看到有关 m 和 n 的要求,暂时没有实现,通过文件恢复mbr已经实现

   dsptw 0 /mbr /noback /File:mymbr.bin /y

文件大小不能小于 432 字节。

这个工具也许对你有用:
http://upload.cn-dos.net/img/339.rar

[ Last edited by 19951001 on 2008-5-7 at 10:55 PM ]

2008-5-7 22:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gmy
版主

操作系统爱好者


积分 1113
发帖 392
注册 2002-11-11
状态 离线
『第 362 楼』:  

/file: 参数已经测试成功, 忘记了, 如果有时间, DOS版的dspt增加此功能。

看了一下str工具,确实有用,  但它只能 file to file ,不能 file to disk,所以就回到 /m /n 功能扩展问题了,我模仿str的参数建议楼主增加以下一个参数:

建议增加 /R1:  Restore Bytes  ("字节恢复", 这是/R "扇区恢复"的有力补充, /m /n 也不必开发了,因为已经包含进去了)

DSPTW [Disk] [Start] [/R1] [Start1] [/From] [FileName] [Start2] [Bytes] [/Y]

Start1: Offset to Process data in DstDisk. (目标磁盘要处理数据的起始位置,同时支持10进制和16进制)
Start2: Offset to Process data in SrcFile. (源文件要处理数据的起始位置,同时支持10进制和16进制)
Bytes:  Total Bytes to be Processed  (源文件要处理的字节数,同时支持10进制和16进制)

示例1:
异地恢复硬盘分区表: 仅恢复A机的HPT(硬盘分区表)至结束标志 到 B机的相应位置,不包括MBR(主引导记录)和微软数字签名等信息.
A机:  dsptw 0 0 1 /s a.bin /y
B机:  dsptw 0 1 /r1 0x1BE /from a.bin 0x1BE 66 /y

示例2:
本地备份硬盘分区表: 仅备份0扇区HPT(硬盘分区表)至结束标志 到 1扇区的相应位置,不包括MBR(主引导记录)和微软数字签名等信息.
dsptw 0 0 1 /s a.bin /y
dsptw 0 1 /r1 0x1BE /from a.bin 0x1BE 66 /y

示例3:
本地恢复硬盘分区表: 仅恢复1扇区HPT(硬盘分区表)至结束标志 到 0扇区的相应位置,不包括MBR(主引导记录)和微软数字签名等信息.
dsptw 0 1 1 /s a.bin /y
dsptw 0 0 /r1 0x1BE /from a.bin 0x1BE 66 /y

当以上内容写完了, 我突然醒悟: dsptw 与 str 配合就能实现以上3个例子,笨死了,基本思路是:
磁盘到文件: dsptw /s
文件到文件: str
文件到磁盘: dsptw /r

[ Last edited by gmy on 2008-5-8 at 11:01 AM ]



DOS之家 http://doshome.com 站长 葛明阳
2008-5-7 22:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lvyanan
新手上路





积分 2
发帖 1
注册 2008-6-20
状态 离线
『第 363 楼』:  

学习并受益,谢谢LZ提供!

2008-6-29 10:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmwjy
新手上路





积分 11
发帖 5
注册 2008-6-30
状态 离线
『第 364 楼』:  

好贴,
多谢楼主的分享!

2008-6-30 21:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ljb603
初级用户





积分 112
发帖 49
注册 2006-10-19
状态 离线
『第 365 楼』:  

下面是我对硬盘 MBR 操作一个批处理,这样写对吗?(特别是每项的返回码是否正确):
@echo off
cls
echo.
echo         硬盘 MBR 操作选项:
echo.  
echo     1.备份     2.恢复     3.重建
echo.
echo     4.查看     5.清零     6.退出
echo.
choice /c:123456 /n 我要:
if errorlevel 6 goto Exit
if errorlevel 5 goto dspt5
if errorlevel 4 goto dspt4
if errorlevel 3 goto dspt3
if errorlevel 2 goto dspt2
if errorlevel 1 goto dspt1

:dspt1
cls
dspt 0 0 1 /s %ramdrive%\mbr.bak /y >nul
if errorlevel 1 echo 读取0柱1扇区的MBR失败!
if errorlevel 1 goto Exit
dspt 0 35 1 /r %ramdrive%\mbr.bak /y >nul
if errorlevel 1 echo 备份MBR到0柱35扇区失败!
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit

:dspt2
cls
dspt 0 35 1 /s %ramdrive%\mbr.res /y >nul
if errorlevel 1 echo 读取0柱35扇区的MBR失败!
if errorlevel 1 goto Exit
dspt 0 0 1 /r %ramdrive%\mbr.res /y >nul
if errorlevel 1 echo 恢复硬盘 MBR 失败!
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit

:dspt3
cls
dspt 0 /mbr /noback /y >nul
if errorlevel 1 echo 重建硬盘 MBR 失败!
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit

:dspt4
cls
dspt 0 0 1 /e /y >nul
if errorlevel 1 echo 硬盘 MBR 清零失败!
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit

:dspt5
cls
dspt 0 35 1 /L /p /a
if errorlevel 1 echo 你没有备份 MBR !
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit

:Exit

2008-7-14 18:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
19951001
高级用户

流落街头



积分 570
发帖 272
注册 2005-10-17
来自 北京
状态 离线
『第 366 楼』:  



  Quote:
Originally posted by ljb603 at 2008-7-14 18:09:
下面是我对硬盘 MBR 操作一个批处理,这样写对吗?(特别是每项的返回码是否正确):
@echo off
cls
echo.
echo         硬盘 MBR 操作选项:
echo.  
echo   ...

操纵成功返回0,不成功返回值大于0,见一楼。
在你的批处理中如果失败会显示失败信息,在显示成功信息。

@echo off
cls
echo.
echo         硬盘 MBR 操作选项:
echo.  
echo     1.备份     2.恢复     3.重建
echo.
echo     4.查看     5.清零     6.退出
echo.
choice /c:123456 /n 我要:
if errorlevel 6 goto Exit
if errorlevel 5 goto dspt5
if errorlevel 4 goto dspt4
if errorlevel 3 goto dspt3
if errorlevel 2 goto dspt2
if errorlevel 1 goto dspt1

:dspt1
cls
dspt 0 0 1 /s %ramdrive%\mbr.bak /y >nul
if errorlevel 1 echo 读取0柱1扇区的MBR失败!
if errorlevel 1 goto Exit
dspt 0 35 1 /r %ramdrive%\mbr.bak /y >nul
if errorlevel 1 echo 备份MBR到0柱35扇区失败!
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit

:dspt2
cls
dspt 0 35 1 /s %ramdrive%\mbr.res /y >nul
if errorlevel 1 echo 读取0柱35扇区的MBR失败!
if errorlevel 1 goto Exit
dspt 0 0 1 /r %ramdrive%\mbr.res /y >nul
if errorlevel 1 echo 恢复硬盘 MBR 失败!
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit
=========================
如果没有备份MBR岂不是MBR被清除!这样你会损失惨重的
=========================

:dspt3
cls
dspt 0 /mbr /noback /y >nul
if errorlevel 1 echo 重建硬盘 MBR 失败!
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit

:dspt4
cls
dspt 0 0 1 /e /y >nul
if errorlevel 1 echo 硬盘 MBR 清零失败!
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit
=============================
从最开始显示的看好像应该是查看,而不是清除,如果有人选择了4,岂不是MBR被清除,原来本打算看一下的,弄不好会丢失硬盘数据的,应该认真一定吧
=================================

:dspt5
cls
dspt 0 35 1 /L /p /a
if errorlevel 1 echo 你没有备份 MBR !
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit
======================================
如果选择了5,应该是清除,不过显示到时不会造成破坏

如果显示第一硬盘MBR,请使用 dspt 0 0 1 /l /p /a
如果显示备份请用你的这段代码
======================================
:Exit

[ Last edited by 19951001 on 2008-7-14 at 10:06 PM ]

2008-7-14 22:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ljb603
初级用户





积分 112
发帖 49
注册 2006-10-19
状态 离线
『第 367 楼』:  

多谢上楼提醒,是我将:dspt4和:dspt5的内容调错了,现更正如下:
……
:dspt4
cls
dspt 0 35 1 /L /p /a
if errorlevel 1 echo 你没有备份 MBR !
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit

:dspt5
cls
dspt 0 0 1 /e /y >nul
if errorlevel 1 echo 硬盘 MBR 清零失败!
if errorlevel 0 echo 恭喜你,操作成功!!!
goto Exit

:Exit

2008-7-15 15:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
19951001
高级用户

流落街头



积分 570
发帖 272
注册 2005-10-17
来自 北京
状态 离线
『第 368 楼』:  



  Quote:
Originally posted by ljb603 at 2008-7-15 15:24:
if errorlevel 1 echo 你没有备份 MBR !
if errorlevel 0 echo 恭 ...

如果失败的话,你这样写先两个Echo都会被显示出来的

[ Last edited by 19951001 on 2008-7-16 at 06:18 PM ]

2008-7-16 18:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xypcmac
初级用户





积分 167
发帖 80
注册 2005-11-7
状态 离线
『第 369 楼』:  



  Quote:
Originally posted by 19951001 at 2008-5-7 22:21:
to gmy:
   http://upload.cn-dos.net/img/363.rar
   你要的版本,我才上来看到有关 m 和 n 的要求,暂时没有实现,通过文件恢复mbr已经实现

   ds ...

447字节的文件好像不能恢复。

2008-7-24 21:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
19951001
高级用户

流落街头



积分 570
发帖 272
注册 2005-10-17
来自 北京
状态 离线
『第 370 楼』:  



  Quote:
Originally posted by xypcmac at 2008-7-24 21:11:


447字节的文件好像不能恢复。

通过文件恢复MBR,只要文件大于432字节就可以,恢复时只取前432个字节,和432字节以后的内容没有关系

2008-7-26 17:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xypcmac
初级用户





积分 167
发帖 80
注册 2005-11-7
状态 离线
『第 371 楼』:  

为什么有447字节,那是因为在446字节(MBR)的前提下,加上了1字节的第一分区激活。即80

2008-7-26 18:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
19951001
高级用户

流落街头



积分 570
发帖 272
注册 2005-10-17
来自 北京
状态 离线
『第 372 楼』:  



  Quote:
Originally posted by xypcmac at 2008-7-26 18:02:
为什么有447字节,那是因为在446字节(MBR)的前提下,加上了1字节的第一分区激活。即80

通过文件恢复 MBR 信息,不包括分区表的信息,目前微软的标准主引导记录就是 432 字节,所以程序中只取432字节的内容进行恢复,你的想法可以使用dspt(w)配合str通过扇区恢复的方式解决,看看gmy前面的帖子。

2008-7-26 19:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xypcmac
初级用户





积分 167
发帖 80
注册 2005-11-7
状态 离线
『第 373 楼』:  

DSPT [Disk] [Start] [Sectors] [/S|/R|/C] [FileName] [/Y]

用此命令似乎也不能恢复不规则的447字节的文件。

当然,我可以恢复446字节的MBR,然后再用 dsptw DISK /ACT:1 来完成。但这样我必然要写一些批处理代码。

2008-7-27 15:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
rockfirm
新手上路





积分 2
发帖 1
注册 2008-9-3
状态 离线
『第 374 楼』:  

woyao kankan

2008-9-3 18:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhenxin
初级用户





积分 83
发帖 38
注册 2007-1-17
状态 离线
『第 375 楼』:  

果然是好东西,谢谢楼主共享

2008-9-3 21:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] ... [38] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: