无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 8508|回复: 18
打印 上一主题 下一主题

活动分区与最后分区确定的批处理(DOS/omnifs版)

[复制链接]
跳转到指定楼层
1#
发表于 2008-4-22 09:46:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
活动分区与最后分区确定的批处理(DOS/omnifs版)
@echo off
if %nhdd%.==. set nhdd=1
:BEGIN
if exist dpit2.ini del dpit2.ini >nul
if exist p_d.ini del p_d.ini >nul
omnifs  /dl=%nhdd% diskinfo>omni_dd.txt
type omni_dd.txt|find /i "%nhdd%.1:" >nul
if errorlevel 1  goto fail
strings lines=LINESIZE omni_dd.txt
strings lines=add %lines%,2
set line=1
:omni
if %line%.==%lines%. goto omni_1
strings line=add %line%,1
strings lined=read omni_dd.txt,%line%
strings omn_row1=left %lined%,1
if not %omn_row1%.==%nhdd%. goto omni
echo %lined%|find /i "FAT" >nul
if not errorlevel 1 goto omni_6
echo %lined%|find /i "NTFS" >nul
if not errorlevel 1 goto omni_6
echo %lined%|find /i "Active" >nul
if not errorlevel 1 goto omni_6
goto omni
:omni_6
echo %lined%>>dpit2.ini
strings omn_row5=mid %lined%,5,1
if %omn_row5%.==:. goto omni_4
strings omn_row3=mid %lined%,3,1
strings omn_row4=mid %lined%,19,3
if not %actpw%.==. goto omni_5
strings omn_row5=mid %lined%,24,6
goto omni_5
:omni_4
strings omn_row3=mid %lined%,3,2
strings omn_row4=mid %lined%,20,3
if not %actpw%.==. goto omni_5
strings omn_row5=mid %lined%,25,6
:omni_5
if not %omn_row5%#==Active#  goto  omni_2
set actpw=%omn_row3%
:omni_2
set lastpw=%omn_row3%
if not %omn_row4%.==. echo  %omn_row1%.%omn_row3%   %omn_row4%>>p_d.ini
goto omni
:omni_1
if %actpw%.==. set actpw=1
cls
echo.
echo 第一硬盘活动分区是:  %nhdd%:%actpw%
echo 第一硬盘最后分区是:  %nhdd%:%lastpw%
goto exit_1
:fail
cls
echo.
echo    Fail, 未能获取第一硬盘有效分区信息。
echo.
pause
rb
:exit_1
set line=
set lines=
set lined=
set omn_row1=
set omn_row3=
set omn_row4=
set omn_row5=

仅供参考。
欢迎批评指正。

[ 本帖最后由 lianjiang 于 2008-4-22 10:07 AM 编辑 ]

snap0020a.jpg (46.01 KB, 下载次数: 134)

snap0020a.jpg

snap0021a.jpg (30.14 KB, 下载次数: 144)

snap0021a.jpg

snap0154.jpg (50.75 KB, 下载次数: 134)

snap0154.jpg
2#
发表于 2008-4-22 10:50:46 | 只看该作者
这个代码看得头晕啊,而且dpit对某些分区是会出错的。

一键ghost里面的又过于简单,而且某些ID不能用;对某些分区也出错。

实际上这个问题只要基于ghost,就变得很简单……
回复

使用道具 举报

3#
 楼主| 发表于 2008-4-22 11:02:14 | 只看该作者
明明写了是用了omnifs,怎么会出现dpit会出错的问题?呵呵。
个人认为,目前,omnifs与ghost搭配,应是兼容性最好的方案之一。

当然,这里之所以用omnifs,还有一个主要目的要解决实现备份到任意路径的问题。
回复

使用道具 举报

4#
 楼主| 发表于 2008-4-22 11:05:13 | 只看该作者
仅用ghost,处理活动分区域最后分区,确实是够了,可是ghost的信息,却无法简单地直观表示出硬盘的分区信息,以供向导操作时使用。
回复

使用道具 举报

5#
发表于 2008-4-22 13:34:16 | 只看该作者
原帖由 lianjiang 于 2008-4-22 11:02 AM 发表
明明写了是用了omnifs,怎么会出现dpit会出错的问题?呵呵。
个人认为,目前,omnifs与ghost搭配,应是兼容性最好的方案之一。

当然,这里之所以用omnifs,还有一个主要目的要解决实现备份到任意路径的问题。


这个是的……

哎 我接触的尽是些古董机器……
工厂里面的,64M内存,5G硬盘(实际容量 42xxMB)。返修品啊
回复

使用道具 举报

6#
 楼主| 发表于 2008-4-22 14:06:31 | 只看该作者
老机器上,omnifs的兼容性存在问题? 不明所以。
回复

使用道具 举报

7#
发表于 2008-4-22 15:19:49 | 只看该作者
支持,我也换了omnifs。lianjiang你的盘里有awk你怎么不用awk找分区,那不是简单点,难道awk兼容性不好?
另外我向请教lianjiang,有没有好用的dos下更改分区id的软件?谢谢
回复

使用道具 举报

8#
 楼主| 发表于 2008-4-22 15:33:34 | 只看该作者
仅仅是确定最后分区及活动分区的话,awk很容易实现;
我的批处理里面考虑到还要进行一些其他处理,感觉还是strings方便些。
没发现兼容性问题,纯属个人习惯。

修改id,很少接触,可用grub修改id,其他的不会。
回复

使用道具 举报

9#
发表于 2008-4-22 16:29:14 | 只看该作者
aefdisk dspt 好象可以在命令行修改

spfdisk diskgen图形界面修改
回复

使用道具 举报

10#
 楼主| 发表于 2008-4-22 17:27:27 | 只看该作者
原帖由 adiwdmd 于 2008-4-22 03:19 PM 发表
支持,我也换了omnifs。lianjiang你的盘里有awk你怎么不用awk找分区,那不是简单点,难道awk兼容性不好?
另外我向请教lianjiang,有没有好用的dos下更改分区id的软件?谢谢

以前曾发过一个帖子。
“初试gawk,发现太强大了。确定硬盘最后分区,一行搞定。


初试gawk,发现太强大了。确定硬盘最后分区,一行搞定。
使用gawk,只需要一行。
回复

使用道具 举报

11#
发表于 2008-4-22 17:36:25 | 只看该作者

回复 #9 cchessbd 的帖子

原帖由 cchessbd 于 2008-4-22 04:29 PM 发表
aefdisk dspt 好象可以在命令行修改

spfdisk diskgen图形界面修改

请教:我使用aefdisk只能修改主分区id,不能修改扩展分区的id,
不知道是怎么回事

[ 本帖最后由 adiwdmd 于 2008-4-22 05:39 PM 编辑 ]
回复

使用道具 举报

12#
 楼主| 发表于 2008-4-22 17:42:52 | 只看该作者
没发现dspt有直接修改id的功能。
好像只有隐藏与解除隐藏的功能。

也许通过直接编辑扇区数据能实现,可惜水平有限不会用。

[ 本帖最后由 lianjiang 于 2008-4-22 05:44 PM 编辑 ]
回复

使用道具 举报

13#
发表于 2008-4-22 22:16:18 | 只看该作者
DSPTW [Disk] [/ChangeType:type:partno] [/Y]
      /ChangeType: Change Partition Type.
      type: 00-FF.
      partno: Partition Number.


dos下的dspt也应该有这个功能吧
回复

使用道具 举报

14#
 楼主| 发表于 2008-4-23 07:40:58 | 只看该作者
原帖由 wowfans 于 2008-4-22 10:16 PM 发表
DSPTW [Disk] [/ChangeType:type:partno] [/Y]
      /ChangeType: Change Partition Type.
      type: 00-FF.
      partno: Partition Number.


dos下的dspt也应该有这个功能吧

windows版与dos版有差别,没有修改id的功能。
或许是我所用版本问题。
dos版帮助中显示日期为2007-08-08.
回复

使用道具 举报

15#
发表于 2008-11-15 19:57:23 | 只看该作者
近日想玩个一键还原,试试了几个DOS下的分区号获取软件,各有所长,各有所短,最后还是决定用:
OMninfo来取得活动分区及最后分区。
于是重新翻到lianjiang 的帖子,发现1楼的方法太过复杂,简化如下,分享:
(在dos下测试通过)
@echo off
cls
echo Get Hard drive information,please wait.......................
omnifs /dl=1 diskinfo>omni_dd.txt
set win_fqh=
set gho_fqh=
set fqh=0
:begin
strings fqh=add %fqh%,1
if %fqh%==20 goto error
rem  识别活动分区
if not %win_fqh%.==. goto gho_fq
type omni_dd.txt |find /i "1.%fqh%:" |find /i "Active"
if not errorlevel 1 set win_fqh=%fqh%
:gho_fq
rem 识别最后分区
type omni_dd.txt |find /i "1.%fqh%:"
if not errorlevel 1 goto begin
strings fqh=sub %fqh%,1
set gho_fqh=%fqh%

if %win_fqh%.==%gho_fqh%. goto error
if %win_fqh%.==.  goto error
if %gho_fqh%.==.  goto error

echo 活动分区:1:%win_fqh%
echo 最后分区:1:%gho_fqh%
goto end

:error
ECHO  识别硬盘分区错误,程序终止!!

:end
pause
回复

使用道具 举报

16#
 楼主| 发表于 2008-12-11 15:41:20 | 只看该作者
原帖由 歌理 于 2008-11-15 19:57 发表

近日想玩个一键还原,试试了几个DOS下的分区号获取软件,各有所长,各有所短,最后还是决定用:
OMninfo来取得活动分区及最后分区。
于是重新翻到lianjiang 的帖子,发现1楼的方法太过复杂,简化如下,分享:
(在dos下测试通过)
@echo off
cls
echo Get Hard drive information,please wait.......................
omnifs /dl=1 diskinfo>omni_dd.txt
set win_fqh=
set gho_fqh=
set fqh=0
:begin
strings fqh=add %fqh%,1
if %fqh%==20 goto error
rem  识别活动分区
if not %win_fqh%.==. goto gho_fq
type omni_dd.txt |find /i "1.%fqh%:" |find /i "Active"
if not errorlevel 1 set win_fqh=%fqh%
:gho_fq
rem 识别最后分区
type omni_dd.txt |find /i "1.%fqh%:"
if not errorlevel 1 goto begin
strings fqh=sub %fqh%,1
set gho_fqh=%fqh%

if %win_fqh%.==%gho_fqh%. goto error
if %win_fqh%.==.  goto error
if %gho_fqh%.==.  goto error

echo 活动分区:1:%win_fqh%
echo 最后分区:1:%gho_fqh%
goto end

:error
ECHO  识别硬盘分区错误,程序终止!!

:end
pause


翻出此帖看了一下,你的批处理在使用范围上不如我的,即兼容性稍差,
多是一些分区状况你就能发现问题了,呵呵。

因为我的实际应用中,不仅要确定活动分区和最后分区,还要同时进行其他处理。
仅是要活动分区与最后分区的话,不需要那么复杂。

近日也对GGhost一键恢复中使用的批处理进行了修改。
1楼的仅是为了抛砖引玉,就不更新了。
回复

使用道具 举报

17#
发表于 2008-12-12 03:49:11 | 只看该作者
原帖由 lianjiang 于 2008-12-11 15:41 发表


翻出此帖看了一下,你的批处理在使用范围上不如我的,即兼容性稍差,
多是一些分区状况你就能发现问题了,呵呵。

因为我的实际应用中,不仅要确定活动分区和最后分区,还要同时进行其他处理。
仅是要活 ...

很不错!发现Lianjiang兄在处理代码的时候考虑的还是比较全面!有时间更新一下代码与大家共享,可以让我们也有所提高!
Ps:国外的一些网络不像国内那么好,本可以常关注你的帖子的!加油Lianjiang兄!
回复

使用道具 举报

18#
 楼主| 发表于 2008-12-12 09:18:40 | 只看该作者
原帖由 q8q8feng 于 2008-12-12 03:49 发表

很不错!发现Lianjiang兄在处理代码的时候考虑的还是比较全面!有时间更新一下代码与大家共享,可以让我们也有所提高!
Ps:国外的一些网络不像国内那么好,本可以常关注你的帖子的!加油Lianjiang兄!


最新版的示例见此帖:


一键恢复中最后有效分区及活动分区的确定批处理(for DOS)
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=134072&extra=page%3D1&frombbs=1
回复

使用道具 举报

19#
发表于 2015-9-20 21:19:38 | 只看该作者
不能确定最后一个分区
我用的win98启动镜像(24个文件全在),把omnifs、strings加入镜像,把你的活动分区与最后分区确定的批处理(DOS/omnifs版)加入AUTOEXEC.BAT倒数第二行之前,运行后出现活动分区1:1,最后分区1:,后面那个数没有,如果把批处理放在AUTOEXEC.BAT最前面,最后分区识别正常1:5,或者加载ntfs驱动,正常,但ghost又不能在加载了ntfs后运行,是怎么回事,还发现如果镜像中有find文件,运行时直接跳转到失败
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-20 14:07

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表