无忧启动论坛

标题: G4d 怎么知道 文件 的起始位置 [打印本页]

作者: mdyblog    时间: 2014-2-15 19:12
标题: G4d 怎么知道 文件 的起始位置
G4d 怎么知道 文件 的起始位置。
比如 (hd0,0)ABC.IMG 文件的起始位置.

cat  --length=0  只能获得长度。

作者: chenall    时间: 2014-2-15 22:15
blocklist (hd0,0)/abc.img
作者: mdyblog    时间: 2014-2-17 15:24
本帖最后由 mdyblog 于 2014-2-17 15:45 编辑
chenall 发表于 2014-2-15 22:15
blocklist (hd0,0)/abc.img


谢谢 !
菜单 或 脚本 中 如何 获得 该值。
比如 写到 变量 pos中。需要用来运算。
现只知道 长度:
cat --length=0   (hd0,0)/abc.img
set  /a  len=*0x8290 / 512

有没有类似的方法 获得 位置 到变量 pos
blocklist 的结果 只能 人眼看, 程序不能获得。%?% 对 blocklist  不起作用。

%?% 能不能对绝大部分命令有效。再分析 字串  %?%


能不能这样获得起始扇区位置。
cat --length=-1   (hd0,0)/abc.img

set  /a  len=*0x8290 / 512
此时 *0x8290 返回  起始扇区位置

作者: chenall    时间: 2014-2-17 16:05
blocklist (hd0,0)/abc.img | set blk=
再想办法从blk变量中提取.

有时候文件是分散存放的,这里一块哪里一块的.上面的结果就会有很多个块列表.
不过就算你获取到了这个值,又想干什么呢?

我建议你还是直接把你想要实现的功能说出来,论坛里能人众多,免得自己走弯路.

我猜测这个属于典型的X-Y问题.

你想解决X问题,认为Y是解决方法,但是你不知道Y如何实现,所以就去问别人 Y 如何做.

你应该问的是X问题,而不Y问题.


作者: mdyblog    时间: 2014-2-17 22:07
本帖最后由 mdyblog 于 2014-2-17 22:25 编辑
chenall 发表于 2014-2-17 16:05
blocklist (hd0,0)/abc.img | set blk=
再想办法从blk变量中提取.


我有一个 磁盘IMG,内有一个分区, 偏移是63扇区。
我需要这个分区在磁盘上的绝对位置,  很多时候需要这个。
好了。
谢谢了!!!

作者: chenall    时间: 2014-2-18 11:33
好吧,还是没有说到X问题...

我不知道你到底要这个做什么,只能给你一个提醒,

就如我#4所说的,不是每个文件都是整块存放的,有可能是多块存放,如果你想直接操作这些块需要自己注意,否则可能导致数据丢失.

比如某个文件分为两个数据块存放的,这是如果通过这个起始位置来读写是行不通的.读还好,顶多就是读出来的数据有问题,写入的法就不好说了,很可能写入到其它文件中去了.
作者: mdyblog    时间: 2014-2-18 13:29
chenall 发表于 2014-2-18 11:33
好吧,还是没有说到X问题...

我不知道你到底要这个做什么,只能给你一个提醒,

谢谢!
技术储备吧。X不确定的。
有时 想到一个点子, 需要 知道 文件的位置 就 能解决 问题。 如 配合 PECMD PART 命令 来在线 处理IMG内的分区。
一般是 blocklist 看看, 再手动 处理。
磁盘变一下。 有来一次。 只好宏观上绕过去
总之是个心结。 就想知道怎么 得到 这个 信息。 经常 构思中 想到这点, 卡在这里。

连续存放,这个会提前保证的。

谢谢了!!!! 搞定!
作者: pseudo    时间: 2014-2-18 14:08
直接map一个iso时,iso内目录结构、文件分配表等元信息并没有保留到内存,需要这些时还是直接从iso而非从内存读取?
作者: mdyblog    时间: 2014-2-18 14:54
pseudo 发表于 2014-2-18 14:08
直接map一个iso时,iso内目录结构、文件分配表等元信息并没有保留到内存,需要这些时还是直接从iso而非从内 ...

grub4dos 太小了, 不会内存缓存这些复杂结构信息。、(WINDOWS LINUX 等OS 会缓存部分)
需要时 直接从ISO提取。
比如 ls 命令。
如果 map   /a.ISO  (hd32)
再 dd   插除 a.iso
ls (hd32)/
失败。
--mem 方式一一样。 存储体是 内存盘。
dd   插除  内存盘, ls (hd32) 也失败。


  
作者: pseudo    时间: 2014-2-18 16:28
--mem 方式的话,那些元数据就可以设法从内存获取了。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3