|
19951001
高级用户
流落街头
积分 570
发帖 272
注册 2005-10-17 来自 北京
状态 离线
|
|
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
状态 离线
|
|
2008-6-29 10:10 |
|
|
jmwjy
新手上路
积分 11
发帖 5
注册 2008-6-30
状态 离线
|
|
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 楼』:
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
状态 离线
|
|
2008-9-3 18:03 |
|
|
zhenxin
初级用户
积分 83
发帖 38
注册 2007-1-17
状态 离线
|
|
2008-9-3 21:26 |
|