|
19951001
高级用户
流落街头
积分 570
发帖 272
注册 2005-10-17 来自 北京
状态 离线
|
『楼 主』:
磁盘扇区读写、分区信息管理工具 Dsptw (2008.11.29 更新)
磁盘扇区读写、分区信息管理工具使用说明
===============
Diskrw.com 是磁盘扇区读写程序
Dpit.com 是分区信息管理工具
Dspt.com 是上述两者合成版本
===============
Syntax:
DSPT [Disk] [Start] [Sectors] [/S|/R|/C] [FileName] [/Y]
Disk: 0-First Hard Disk, 1-Second Hard Disk, ...(0为第一硬盘,1为第二硬盘)
A:, B, C:, D: ....:
Start: Disk Absolute Sector Number (扇区号,应为大于等于0的整数,磁盘扇区从0开始编号)
:n Partition Number (:n n为分区号,可以通过命令:dspt 0 /l 得到)
Sectors: Total Sectors to be Processed (要处理的扇区数量,取值范围 1-4194303 即0x0-0x3FFFFF)
/S: Save Disk Sector Info to File (保存磁盘扇区到文件)
/R: Restore Disk Sector Info from File (把文件信息恢复到磁盘,要求文件大小应该等于要恢复的扇区数量乘512)
/C: Compare Disk Sector Info with File (把文件信息与磁盘扇区信息进行比较,要求文件大小应该等于要比较的扇区数量乘512)
FileName: Disk Sector Info File (文件名字)
/Y: Assume Yes on all Queries (对要求确认的请求默认为 Y ,并且不显示版权信息)
例子:
dspt 0 0 1 /s mbr0.bin 将第一硬盘的从0号扇区开始共一个扇区的信息保存到文件 mbr0.bin ,该位置为磁盘的主引导记录。
dspt 1 100 1000 /s sectors.bin 将第二硬盘从第100个扇区开始共1000个扇区的信息保存到 sectors.bin ,保存后文件大小应该为512000字节。
dspt 0 0 1 /c mbr0.bin 将文件信息与第一硬盘从0号扇区开始共一个扇区的信息进行比较,要求文件大小为512字节。
dspt 0 0 1 /r mbr0.bin 将文件信息恢复到第一硬盘从0号扇区开始共一个扇区,要求文件大小为512字节。
DSPT [Disk] [Start] [Sectors] [/L] [/P] [/A]
/L: List Disk Sector Info on Screen (将磁盘信息在屏幕上显示)
/P: Pause echo Screen (满屏暂停)
/A: Show ASC Value (显示 ASC 码)
DSPT [Disk] [Start] [Sectors] [/E] [/Y]
/E: Clear Disk Sector Info (清空扇区信息)
例子:
dspt 0 0 100 /L /p /a 将第一硬盘的从0号扇区开始共100个扇区的信息显示在屏幕上,满屏暂停并显示 ASC 码。
dspt 1 100 1000 /e 将第二硬盘从第100个扇区开始共1000个扇区的信息清空。
DSPT [SrcDisk] [Start] [Sectors] [/D] [DstDisk] [Offset] [/Y]
SrcDisk/DstDisk: 0-First Hard Disk, 1-Second Hard Disk, ...
A:, B:, C:, D: ....
Start: Disk Absolute Sector Number
Sectors: Total Sectors to be Processed
/D: Copy Disk Sector Info from SrcDisk to DstDisk (磁盘信息复制)
Offset: Disk Absolute Sector Number (扇区号,应为大于等于0的整数,磁盘扇区从0开始编号)
/Y: Assume Yes on all Queries
例子:
dspt 0 0 1000 /d 0 100 将第一硬盘的从0号扇区开始共1000个扇区的信息复制到第一硬盘第100扇区开始的共1000个扇区。
DSPT [Disk] [/S|/R|/C] [FileName] [/Y]
Disk: 0-First Hard disk, 1-Second Hard Disk, ...
/S: Save Disk Partition Info to File (保存磁盘分区信息)
/R: Restore Disk Partiton Info from File (从文件恢复磁盘分区信息)
/C: Compare Disk Partiton Info with File (将磁盘分区信息与文件信息进行比较)
FileName: Disk Partition Info File
/Y: Assume Yes on all Queries
例子:
dspt 1 /s dsk1part.bin 将第二硬盘的分区信息保存到文件 dsk1part.bin
DSPT [Disk] [/S] [FileName] [/DBR] [/Y]
Save Partition Boot Record to File
例子:
dspt 0 /s dbr0.bin /dbr 将第一硬盘的每个分区的引导信息保存到文件 dbr0.bin
关于文件大小的说明:保存的分区信息文件和 DBR 信息文件的大小应该为 (516×保存的扇区数量 + 1)
DSPT [Disk] [/L] [/NOEXT]
/L: List Disk Partition Info on Screen (在屏幕上显示磁盘分区信息)
/NOEXT: Don't Display Big Extended Partition (不显示总的扩展分区信息)
例子:
dspt 0 /l 将第一硬盘的分区信息保显示在屏幕上。
DSPT [Disk] [/ACT:n]
Active Disk Partition n
例子:
dspt 0 /ACT:2 将第一硬盘的第二分区激活,只有主分区才能被激活。
DSPT [Disk] [/FIND:type] [/NOEXT]
Find Disk Partition 查找分区
type: Can be FAT16/FAT32/FAT/NTFS/LINUX/ALL
例子:
dspt 0 /Find:all 查找第一硬盘的所有分区,显示格式0:1 0:2 ....。
DSPT [Disk] [/MBR] [/NOBACK] [/Y]
ReBuild Disk Main Boot Record
/NOBACK: Don't Backup old MBR
例子:
dspt 0 /mbr 重建第一硬盘的主引导记录,默认将原主引导记录备份到 dsk?mbr.bin ,与 Fdisk/mbr 功能相同。
DSPT [Disk] [/HIDE|/UNHIDE:n]
Hide/Unhide Disk Partition n (隐藏/显示分区n, n可通过 dspt 0 /l 得到)
例子:
dspt 0 /hide:3 隐藏第一硬盘的第三个分区。
dspt 0 /unhide:3 显示第一硬盘的第三个分区。
DSPT [Disk] [/DPS|/DPR|/DPC] [/Y]
Disk: 0-First Hard disk, 1-Second Hard Disk, ...
/DPS: Save Disk Partition Info to Last Cluster (将分区信息保存到硬盘最后一个簇)
/DPR: Restore Disk Partiton Info from Last Cluster (从硬盘最后一个簇,恢复磁盘的分区信息,前提是应该保存分区信息)
/DPC: Compare Disk Partiton Info with Last Cluster (将分区信息与硬盘最后一个簇信息比较)
/Y: Assume Yes on all Queries
说明:该命令慎用,如果你的 BIOS 不支持大硬盘,通过 BIOS 得到的磁盘最后一个簇可能不是真正的最后簇,这时对该簇的读写可能造成数据丢失。
2007.1.15
dpit 1.15 测试版本,加入了对FAT32、NTFS卷标的支持,并能够显示FAT32分区的 DOS 盘符。
FAT16我这里没有测试环境,请大家帮忙测试一下卷标和盘符是否正确。
2007.2.15
发 diskrw 2007.1.31 DOS 正式版本。
支持 DOS 原生盘符,目前不支持IFS 和 NTFS4DOS生成的盘符。
2007.2.26
发 dspt 和 dpit DOS正式版本
2007.5.29
增加一个小工具
在262楼有一个修正的 DSPT DOS 版本
2007.7.12
1 增加磁盘比较功能
DISKRW [Disk] [Start] [Sectors] [/O] [DstDisk] [Offset]
Disk: 0-First Hard Disk, 1-Second Hard Disk, ...
A:, B:, C:, D: ...
Start: Disk Absolute Sector Number
Sectors: Total Sectors to be Processed
/O: Compare Disk Sector Info with DstDisk
DstDisk: 0-First Hard Disk, 1-Second Hard Disk, ...
A:, B:, C:, D: ...
Offset: Disk Absolute Sector Number
例子:
diskrw c: 20 10 /O d: 5 将C:盘的第20号扇区开始的10个扇区和D:盘第5号扇区开始的10个扇区比较
diskrw 0 10 10 /O c: 0 将第一物理磁盘的第10号扇区开始的10个扇区和C:盘第0号扇区开始的10个扇区比较
2 增加直接修改磁盘扇区的功能
DISKRW [Disk] [SectorNo] [Offset] /M /Hex:Value
Disk: 0-First Hard Disk, 1-Second Hard Disk, ...
A:, B:, C:, D: ...
SectorNo: Disk Absolute Secotor Number
Offset: Offset in Specified Sector (0..511)
/M: Modify Disk Sector Info
/Hex: Hexadecimal Stytle
Value: Hexadecimal Digital String (No more than 32 characters)
例子:
diskrw c: 20 0 /M /Hex:ABCDEF 将C:盘的第20号扇区偏移位置0处的三个字节修改为 0xAB,0xCD,0xEF
注:对扇区修改每次最多16个字节(32个字符)
2007.7.17更新
dsptw 〔disk〕 /l /a
增加参数 /a 可以在Win32环境下准确得到磁盘的扇区总数
2007.8.8
DOS版本 Diskrw 更新
1、修正当磁盘为DOS盘符时,磁盘编辑功能存在的bug。
Win32版本更新Dsptw和diskrw
2007.8.15
diskrw更新在一楼
dspt更新在290楼
dspt 错误代码:
#define SUCCESS 0
#define READ_DISK_ERROR 1
#define WRITE_DISK_ERROR 2
#define OPEN_FILE_ERROR 3
#define CREATE_FILE_ERROR 4
#define READ_FILE_ERROR 5
#define WRITE_FILE_ERROR 6
#define FILE_SIZE_ERROR 7
#define TOO_MANY_PARTITIONS 8
#define PARTITION_NUMBER_ERROR 9
#define PARTITION_CANNOT_BE_HIDDEN 10
#define PARTITION_CANNOT_BE_UNHIDDEN 11
#define ONLY_PRIMARY_PARTITION_CAN_BE_ACTIVE 12
#define UNSURPPORT_PARTITION 13
#define DISK_ERROR 14
#define NOT_ENOUGH_MEMORY 15
#define PARAMETER_ERROR 16
#define USER_CANCEL 17
#define LIST_OK 100
#define OS_ERROR 201
#define NAME_ERROR 202
#define COMPARE_MISMATCH 203
#define PRG_SIZE_ERROR 204
#define SECTORS_ERROR 205
#define PARAMETERS_TOO_FEW 207
#define UNKOWN_ERROR 1000
2008.9.27
Win32 版本 diskrw 更新
http://upload.cn-dos.net/img/798.rar
本次修改的内容:
1 命令调整,原来的 /E 命令(删除扇区内容)更改为 /F 命令 (扇区内容充填)
原来的 /E 命令是使用 0 充填指定扇区
现在的 /F 命令可指定任何值对扇区进行充填,如果不输入 Value 值则和原版本的 /E 命令执行相同的功能
DISKRW [Disk] [StartSector] [Sectors] [/F] [Value]
/F: Fill Disk Sector Info with Value
Value: an Integer (0..255), default is 0
2 命令调整,将修改扇区的命令有原来的 /M (Modify) 调整为 /E (Edit) 更为直观
DISKRW [Disk] [SectorNo] [Offset] [/E] [/HEX:Value]
SectorNo: Absolute/Relative Sector No. of Disk
Offset: The Offset in Specified Sector (0..511)
/E: Edit Disk Sector Info
/HEX: Hex Style
Value: Hex Digital String (No more than 32 characters)
3 功能增加,增加移动扇区的功能,使用的命令为 /M
DISKRW [Disk] [StartSector] [Sectors] [/M] [DstDisk] [Offset]
/M: Move Disk Sector DATA form Disk to DstDisk
DstDisk: 0-First hard Disk, 1-Second hard Disk, ...
A:, B:, C:, D: ...
Offset: Absolute/Relative Sector No. of Disk
4 修正了使用 16 进制数的大小写存在的 Bug
DOS 版本不存在此问题
2008.11.1
Diskrw for DOS
与原来版本改变
1、增加参数 Offset
此参数用来指定文件内部的偏移位置,默认值为0(文件的开始)
如果给出了Offset的值,但是文件不存在,则给出的Offset值被忽略。
例子:
Diskrw C: 0 10 /S sector.bin 10
将磁盘C:从起始位置开始的10个扇区,写入文件sector.bin。如果文件不存在,则sector.bin的大小为5120个字节,如果文件存在,如文件大小小于10字节程序会给出错误信息,如果文件大小大于等于10字节,则程序会将扇区内容写入文件的偏移位置10开始的5120字节中,文件中的原来信息会被覆盖(如文件长度小于5130字节则文件长度增加)。
DISKRW [Disk] [Start] [Sectors] [/S|/R|/C] [FileName] [Offset]
Disk: 0-First Hard Disk, 1-Second Hard Disk, ...
A:, B:, C:, D: ...
Start: Disk Absolute Sector Number
Sectors: Total Sectors to be Processed
/S: Save Disk Sector Info to File
/R: Restore Disk Sector Info from File
/C: Compare Disk Sector Info with File
FileName: Disk Sector Info File
/Offset: The Offset In FileName
2、增加功能 /M
这个功能在win32版本中早已实现,将磁盘Disk中从位置Start开始的Sectors个扇区内容移动到磁盘DstDisk中Offset的位置,移动后Disk中相应位置的扇区信息会被清除,如移出扇区和移入扇区位置叠加,程序会智能选择要清除的扇区部分。
DISKRW [Disk] [Start] [Sectors] [/D|/O|/M] [DstDisk] [Offset]
/D: Duplicate Disk Sector Info from Disk to DstDisk
/O: cOmpare Disk Sector Info with DstDisk
/M: Move Disk Sector Info from Disk to DstDisk
DstDisk: 0-First Hard Disk, 1-Second Hard Disk, ...
A:, B:, C:, D: ...
Offset: Disk Absolute Sector Number
3、增加参数 /Asc
编辑磁盘可以直接使用 ASCII 码,长度不超过16字符。
DISKRW [Disk] [SectorNo] [Offset] [/E] [/Hex|/Asc]:[Value]
SectorNo: Disk Absolute Secotor Number
Offset: Offset in Specified Sector (0..511)
/E: Edit Disk Sector Info
/Hex: Hex Style
/Asc: ASCII Style
Value: Hex_Digital/ASCII String (32/16 Characters Maximum)
4、扇区内部处理命令(只处理单个扇区)
如果Bytes输入0或者输入数据较大(超出扇区边界),则程序处理从Offset开始到扇区结束的字节数
例子:
Diskrw 0 0 446 /b 64 mbr.dat 备份第一硬盘(磁盘0)第一扇区(0扇区)中偏移位置446开始 的64个字节到文件 mbr.dat。(这里备份的就是磁盘MBR中的分区表信息)
DISKRW [Disk] [SectorNo] [Offset] [/B|/V|/U] [Bytes] [FileName]
/B: Backup Disk Sector Info to File
/V: Vertify Disk Sector Info with File
/U: Update Disk Sector Info from File
Bytes: Bytes to Process (0..512)
diskrw for Win32
1、修正了显示磁盘扇区函数中存在的bug,当扇区数目为16的倍数时,显示最后一屏时存在的问题,重新写了扇区显示函数。
2、修正了其中一处当磁盘读写失败时,返回值为 SUCCESS 的错误。
http://www.cn-dos.net/forum/atta ... 5c57&download=1
2008.11.13 diskrw for DOS 终结版本 389楼
http://www.cn-dos.net/forum/atta ... ef93&download=1
2008.11.15
diskrw 两栖版本
http://www.cn-dos.net/forum/atta ... 90a9&download=1
2008.11.29 dsptw更新
增加可以显示分区ID值的开关 /GetID (适用于 /L 和 /find 命令)
使用方法:
dsptw 0 /l /getid
dsptw 0 /find:all /getid
http://www.cn-dos.net/forum/atta ... 664f&download=1
此帖被 +3 点积分 点击查看详情 评分人:【 】 | 分数: +1 | 时间:2009-8-27 08:34 | 评分人:【 szl1123 】 | 分数: +2 | 时间:2010-3-24 22:30 |
|
附件
1: DsptDpit0208.rar (2007-2-27 04:44, 34.37 K, 下载附件所需积分 1 点
,下载次数: 604)
附件
2: dsptw20070808.rar (2007-8-12 12:16, 32.3 K,下载次数: 649)
|
|
2006-11-2 01:17 |
|
|
chenall
银牌会员
积分 1276
发帖 469
注册 2002-12-23 来自 福建泉州
状态 离线
|
|
2006-11-2 02:08 |
|
|
cchessbd
高级用户
积分 525
发帖 222
注册 2006-8-28
状态 离线
|
『第
3 楼』:
Quote: | Originally posted by 19951001 at 2006-11-2 01:17:
这是应网友 cchessbd 的要求做的这个程序。
将我的两个小工具,diskrw 和 dpit 合成到一起。
程序根据文件名执行不同的功能,
当程序名为 diskrw 时执 ... |
|
谢谢。我的启动盘因为这个已经更新不少次了,呵呵。
不过里面的bat倒不是很需要,就是有个dpit.com,
cab压缩包一下也可以少10k了
[ Last edited by cchessbd on 2006-11-2 at 04:52 AM ]
|
|
2006-11-2 04:26 |
|
|
cchessbd
高级用户
积分 525
发帖 222
注册 2006-8-28
状态 离线
|
『第
4 楼』:
就是,我刚刚测试了下。恢复出错。
重新下了。测试没有问题。非常感谢!
[ Last edited by cchessbd on 2006-11-2 at 05:09 AM ]
|
|
2006-11-2 05:02 |
|
|
19951001
高级用户
流落街头
积分 570
发帖 272
注册 2005-10-17 来自 北京
状态 离线
|
『第
5 楼』:
2006.11.2更新
1 使用diskrw 功能时当 disk 为A: 或 B:时,限制使用 :N 参数
2 对diskrw 的显示功能的 /p 和 /a 参数重写。
3 一些显示方面的修正。
关于 diskrw 新增加的参数 :N 请参阅压缩包中 readme.txt。
[ Last edited by 19951001 on 2006-11-3 at 02:30 AM ]
|
|
2006-11-2 23:33 |
|
|
chenall
银牌会员
积分 1276
发帖 469
注册 2002-12-23 来自 福建泉州
状态 离线
|
|
2006-11-15 04:55 |
|
|
zjnbwdj
中级用户
积分 300
发帖 137
注册 2005-11-4
状态 离线
|
|
2006-11-15 08:54 |
|
|
19951001
高级用户
流落街头
积分 570
发帖 272
注册 2005-10-17 来自 北京
状态 离线
|
|
2006-11-15 22:49 |
|
|
19951001
高级用户
流落街头
积分 570
发帖 272
注册 2005-10-17 来自 北京
状态 离线
|
『第
9 楼』:
2006.11.16
程序中发现了一个BUG,网友weilong888提出的,现已修正。
请重新下载。
|
|
2006-11-16 22:38 |
|
|
weilong888
银牌会员
积分 1270
发帖 548
注册 2004-5-31
状态 离线
|
『第
10 楼』:
下载试了一下。dpit 0 /c dsk0pt.bin这个命令已经能显示done了。可是dpit 0 /s dsk0dbr.bin /dbr却是显示disk read error。看了一下,多了一个1548B的dsk0dbr.bin文件。
|
|
2006-11-19 11:05 |
|
|
19951001
高级用户
流落街头
积分 570
发帖 272
注册 2005-10-17 来自 北京
状态 离线
|
『第
11 楼』:
Quote: | Originally posted by weilong888 at 2006-11-19 11:05:
下载试了一下。dpit 0 /c dsk0pt.bin这个命令已经能显示done了。可是dpit 0 /s dsk0dbr.bin /dbr却是显示disk read error。看了一下,多了一个1548B的dsk0dbr.bin文件。 |
|
我这里暂时没有查出问题,你试一下 Windows版本看是否会出现同样的问题,因为两个版本处理方式是一致的,我会尽快找出bug.
你能否把你的磁盘 mbr 传上来,使用命令
diskrw 0 0 1 /s mbr0.bin
将文件保存到mbr0.bin后将文件传上来。
[ Last edited by 19951001 on 2006-11-20 at 05:04 AM ]
|
|
2006-11-20 04:56 |
|
|
weilong888
银牌会员
积分 1270
发帖 548
注册 2004-5-31
状态 离线
|
『第
12 楼』:
现把我的diskrw 0 0 1 /s mbr0.bin中的mbr0.bin文件传上来。楼主看一下,这个bug会在哪里。
[ Last edited by weilong888 on 2006-11-21 at 08:56 AM ]
|
|
2006-11-20 13:50 |
|
|
19951001
高级用户
流落街头
积分 570
发帖 272
注册 2005-10-17 来自 北京
状态 离线
|
『第
13 楼』:
Quote: | Originally posted by weilong888 at 2006-11-20 13:50:
现把我的diskrw 0 0 1 /s mbr0.bin中的mbr0.bin文件传上来。楼主看一下,这个bug会在哪里。 |
|
你是一下这个版本,我更改了查找顺序。
[ Last edited by 19951001 on 2006-12-1 at 03:48 AM ]
|
|
2006-11-20 22:26 |
|
|
gmy
版主
操作系统爱好者
积分 1113
发帖 392
注册 2002-11-11
状态 离线
|
『第
14 楼』:
已收到,下一个版本更新.
|
DOS之家 http://doshome.com 站长 葛明阳 |
|
2006-11-21 00:01 |
|
|
19951001
高级用户
流落街头
积分 570
发帖 272
注册 2005-10-17 来自 北京
状态 离线
|
『第
15 楼』:
to weilong888:
我在一台机器上,参照你的mbr方式将磁盘分为3个主分区和一个扩展分区(内有6个分区),操作没有出现问题,11月17日我上传了两个版本,如果你下载的是上午上传的版本,可能有问题,请你重新下载在测试一下,我这里又提供一个版本是按网友chenall要求,能够显示主分区或逻辑分区的版本,也请测试一下。
[ Last edited by 19951001 on 2006-12-1 at 03:49 AM ]
|
|
2006-11-21 03:39 |
|