Ghost自动备份时,活动主分区、最后分区号与盘符的确定思路和批处理

使用了第三方软件minitow(for win)/minito(for dos),软件下载及使用可去dos联盟。

一、windows下解决方案

(一)思路

1,用minitow获得硬盘信息。实例如下:

------------------------------------

N:N DOS WIN PRI/LOG ACT HIDE ID FILE SYSTEM   LABEL    TOTALmb FREEmb

1:1   = C:   C:   PRIMARY YES NO 0B FAT32        NO NAME     7538 3652

1:2   = E:    PRIMARY NO   YES   17 NTFS/HPFS             7467 0

1:3   = F:   D:   LOGICAL NO   NO 07 NTFS/HPFS             10001 7524

1:4   = G:   E:   LOGICAL NO   NO 07 NTFS/HPFS             15005 8483

1:5   = D:   F:   LOGICAL NO   NO 0B FAT32        APPZ        30004 17382

1:6   = H:   G:   LOGICAL NO   NO 07 NTFS/HPFS             44453 19427

------------------------------------

2,对上面的信息进行处理,获得活动主分区,及最后分区和最后分区对应的盘符。

(二)具体方法。

【说明,本人水平有限,相信有更好的处理办法。下面的批处理是正在使用的,正确性应基本没问题。

批处理中的一些代码改造自他人在回答其它问题时的答复。】

dos下的思路相同,处理方法有些不同。

批处理如下。【】为说明。

-------------------------------

@echo off

rem by lianjiang

rem 【获得硬盘参数,保存文件名为hdmini.txt】

tools\minitow /nohp /ifs /p>temp\hdmini.txt

rem 【生成简化的硬盘信息,此部分不是必须,只是由于一些信息个人以为不很重要,去除,新文件为hdmini_1.txt】

setlocal EnableDelayedexpansion

if exist temp\hdmini_1.txt del temp\hdmini_1.txt >nul

For /f "tokens=1 delims=\" %%i In (temp\hdmini.txt) do (

Set var=%%i

call :sub_012

)

endlocal

rem 【读取活动主分区的分区号%act%,最后分区号%lpartition%及最后分区对应的盘符%ldrive%,可用空间%freesize%】

For /f "tokens=1-3" %%i In (temp\hdmini_1.txt) do (

Set lpartition=%%i

Set ldrive=%%j

set freesize=%%k

if %%j.==C:. set act=%%i

)

echo 活动主分区号%act%   最后分区号%lpartition%   最后分区对应的盘符%ldrive%

pause

goto sub_018

:sub_012

rem 【取N:N WIN FREEmb三项数据】

set s1=!%var:~1,3!

set s3=!%var:~12,3!

set s10=!%var:~69,6!

echo %s1% %s3% %s10%>>temp\hdmini_1.txt

goto :eof

:sub_018

rem 【继续其他处理】

----------------

新文件hdmini_b.txt的形式如:

N:N WIN FREEmb

1:1 C:   3652

1:2     0

1:3 D:   7524

1:4 E:   8483

1:5 F:   17382

1:6 G:   19427

=============================

利用DSPTW取活动分区的分区号和盘符

以下是DSPTW产生的磁盘分区列表a.txt:

CODE:

No.   Dr Tag FileSystem     Volume    Act StartPos Sectors MBytes FreeMB

1:1     Pri HIDE_DELL                   63       144522     70

1:2   I: Pri HPFS/NTFS    RECOVERY        145408     20971520 10240   4105

1:3   D: Pri HPFS/NTFS    OS       Yes 21116928 83886080 40960   21514

1:4   C: Log HPFS/NTFS    DATAPART1    105005056   101298176   49462   6122

1:5   E: Log HPFS/NTFS    SOFT          206305280   20480000 10000   2382

1:6   F: Log HPFS/NTFS    BACKUP       226787328   80592896 39352   12603

1:7     Log HIDE_DELL                   307382272   5195776 2537任务:找到YES(活动分区标识)所在行的分区号和盘符,分别赋予变量 a1 和 a2 ,本例的结果应该是 a1=3 , a2=D

要求:用FOR和FINDSTR等自带命令,不要使用第三方工具,输出用echo a1和echo a2,分别只用一行完成。

CODE:

for /f "tokens=2,3 delims=: " %%i in ('findstr /i " Yes " a.txt') do set a1=%%i&set a2=%%j&&call echo %%a1%% %%a2%%以上代码通过测试。

二、DOS下解决方案。

所需工具:minito,strings,ifs

(一)思路与windows下相同。

由于可能要在NTFS分区创建新目录,因此获取的是加载了ifs驱动后的dos下盘符。不创建目录的话,不需要确定最后分区对应的盘符。

示例如下

N:N     : PRI/LOG ACT HIDE ID FILE SYSTEM   LABEL    TOTALmb FREEmb

1:1   = C: PRIMARY YES NO 0B FAT32        WINXP    7538 3619

1:2   = E: PRIMARY NO   YES   17 NTFS/HPFS             7467

1:3   = F: LOGICAL NO   NO 07 NTFS/HPFS             10001

1:4   = G: LOGICAL NO   NO 07 NTFS/HPFS             15005

1:5   = D: LOGICAL NO   NO 0B FAT32        APPZ        30004 17234

1:6   = H: LOGICAL NO   NO 07 NTFS/HPFS             44453

(二)批处理。

@echo off

:mini_BEGIN

if exist mini_dd.txt del mini_dd.txt

minito /nohp /p /ifs>mini_dd.txt

rem 文件行数

strings lines=LINESIZE mini_dd.txt

if %lines%#==0# goto quit

strings lines=add %lines%,1

set line=1

echo 硬盘信息:

:mini

strings line=add %line%,1

if %line%#==%lines%# goto mini_1

strings lined=read mini_dd.txt,%line%

strings row1=left %lined%,3

strings row3=mid %lined%,8,2

strings row5=mid %lined%,19,3

if %row5%#==YES# set actp=%row1%

set lastp=%row1%

set lastd=%row3%

if not %lined%#==# echo %lined%

rem if not %lined%#==# echo %lined%>>hdinfor.ini

rem if %row1%#==N:N# goto mini

rem if %row5%#==YES# goto mini

rem echo %lined%>>hdinforb.ini

goto mini

:mini_1

echo.

echo   请根据上面显示的硬盘信息确认识别结果。

echo.

echo   自动识别结果:

echo    活动分区是%actp%

echo    最后分区是%lastp%

echo    最后分区对应的盘符是%lastd%

echo.

pause

goto exit

:fail

cls

echo.

echo   很抱歉,本工具采用的软件未能获得有效硬盘信息。

echo.

pause

:exit

============================

一键恢复中最后有效分区及活动分区的确定批处理(for DOS)

一键恢复中最后有效分区及活动分区的确定批处理(for DOS)

一键恢复工具中的最主要任务之一,就是确定有效最后分区与活动分区。

下面的批处理中使用了omnifs和gawk,仅供参考。

抛砖引玉。

图1,处理结果   图2,脚本

========================================

三、在Windows下手动改变盘符后,在DOS下也能正确识别,没问题,下面是测试结果。(虽然在Windows下把E:改成了M:,但在DOS下也能正确识别。)

1,硬盘信息。

N:N DOS WIN PRI/LOG ACT HIDE ID FILE SYSTEM   LABEL    TOTALmb FREEmb

1:1   = C:   C:   PRIMARY YES NO 0B FAT32        NO NAME     7538 3594

1:2   = E:    PRIMARY NO   YES   17 NTFS/HPFS             7467 0

1:3   = F:   D:   LOGICAL NO   NO 07 NTFS/HPFS             10001 7576

1:4   = G:   M:   LOGICAL NO   NO 07 NTFS/HPFS             15005 8530

1:5   = D:   F:   LOGICAL NO   NO 0B FAT32        APPZ        30004 17233

1:6   = H:   G:   LOGICAL NO   NO 07 NTFS/HPFS             44453 19378

2,输出结果:

活动主分区号1:1   最后分区号1:6   最后分区对应的盘符G:

-----------------------------------------------------------------

说明:以上处理方案,不适用于用U盘启动,且启动后u盘盘符为C:的情况(启动后盘符为A:的,仍可使用)。

附上处理方案中用到的工具,包括minitow(for win)/minito(for dos),strings.com。

点击下载判断最后分区的工具 (80.16 KB)

多硬盘识别方案:

小咕咚 说:

使用omnifs32或omnifs.exe:

DOS下:

@echo off

omnifs info >disk.txt

或Windows下:

@echo off

omnifs32 info >disk.txt

disk.txt内容为:

Disk: 1 (37.26GB) M:[37.26GB] S:[MPA245Q2HD7GWA]

1.1: (   10.04GB) [C:\] Active Volume NTFS

1.2: (   10.04GB) [D:\] Volume NTFS

1.3: ( 2.01GB) [E:\] Volume NTFS

1.4: ( 5.02GB) [F:\] Volume NTFS

1.5: (   10.13GB) [G:\] Volume NTFS

1.6: (   39.19MB)    Volume FAT32 l:[ACRONIS SZ]

Disk: 2 (13.99GB) M:[13.99GB]

2.1: (     10GB) [J:\] Volume NTFS l:[YD02-01]

2.2: ( 3.98GB)    Hidden Volume FAT32

( 8.89MB) Unused Space

Disk: 3 (125MB) M:[125MB]

3.1: ( 117.63MB) [I:\] Active Volume FAT16

( 7.34MB) Unused Space

Disk: 4 (15.31MB) M:[15.31MB]

4.1: (   15.28MB) [K:\] Volume FAT12 l:[CANON_DC] Removable Drive

Disk: 5 (37.27GB) M:[37.27GB]

5.1: ( 8.03GB) [L:\] Volume NTFS l:[YD01-01Ghost]

5.2: (   12.05GB) [M:\] Volume NTFS l:[YD01-02Softs]

5.3: ( 8.03GB) [O:\] Volume NTFS l:[YD01-04Acronis]

5.4: ( 9.16GB) [N:\] Volume NTFS l:[YD01-03OK]

( 4.46MB) Unused Space

上面列表详细显示[omnifs版本为v11.0.0.1502]:

1、硬盘数量、型号;

2、各个硬盘[含U盘、移动硬盘]的分区数、分区类型、活动性、大小、是否隐藏。

从重定向产生的文本文件disk.txt中如何用批处理判断最后分区、活动分区?

lianjiang 说:

磁盘多不是问题。而是你到底想需要得到什么结果。

首先需要你确认以下信息:

最后分区是:

5.4: ( 9.16GB) [N:\] Volume NTFS l:[YD01-03OK]

活动分区为:

1.1: (   10.04GB) [C:\] Active Volume NTFS

对否?还是只找第一硬盘最后分区?

因为有时最后磁盘的最后分区可能没多大实际意义。

haohaodlam 说:

minito 兼容性不是很好 SATA和ATA混用的情况下ODS下运行死机 (已经加了-NOHP)参数

lianjiang 说:我也发现minito兼容性不佳,已经放弃,gghost中早已改用dspt了。

点击下载DOS磁盘信息工具omnifs

点击下载DOS分区信息管理工具dspt

以下是老毛桃写的请参考:SET TestFile=Test_%RANDOM%.TMP

SETLOCAL ENABLEDELAYEDEXPANSION

For %%I In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do (

CD.>%%I:\%TestFile%

CLS&&If Exist %%I:\%TestFile% Set ResultD=%%I:&&DEL %%I:\%TestFile% /Q

)

ECHO 最靠后的可写分区为:%ResultD%

IF EXIST %ResultD%\ghost (

ECHO %ResultD%\ghost 文件(夹)已经存在

) ELSE (

md %ResultD%\ghost\&ATTRib +S +H %ResultD%\ghost

)

ENDLOCAL

PAUSE

lianliang最新处理方案:

利用ghost的ghststat.txt确定活动分区及最后有效分区的方法 [09.06.19]

特点:此方法完全利用ghost自身的信息来进行一键恢复类工具所需的基本信息的处理。

1,用ghost -dd取得硬盘信息。

2,对生成的ghststat.txt进行处理,适用于ghost v8.0~ v11.02。

DOS处理脚本及结果见附图:

磁盘区号 linux,DOS下确定活动主分区和最后分区的区号和盘符的工具相关推荐

  1. linux目录转化为磁盘,直观:在Linux系统下,将普通硬盘的ntfs分区转换为ext4分区,并在启动后自动挂载...

    Linux Foundation Kubernetes安全专家认证,请预约,享受最后三天的早鸟优惠! >>> 基本信息: 我的笔记本电脑具有双硬盘驱动器配置,一个是原始750G硬盘驱 ...

  2. linux文件格式 磁盘修复6,linux(centos)下ext4硬盘格式误删文件后的恢复(testdisk与photorec的使用)...

    在使用winscp上传服务器图片时,由于不小心误删了相似的一个目录下的图片文件,正好在本地有没有这个文件夹的图片备份,所以只好寻找linux(centos)下的文件恢复工具. 在成功恢复完所在目录的图 ...

  3. linux ntfs分区转换,Linux系统下,将普通硬盘的ntfs分区转换为ext4分区,并开机自动挂载...

    基本情况: 我的笔记本是双硬盘配置,一块是原装的750G的硬盘,另一块是闪迪120G固态硬盘,我现在的操作系统是 固态硬盘上面的 Ubuntu系统,750G的硬盘就成了存储设备挂载在 Ubuntu 上 ...

  4. exfat和ntfs和linux,centos下如何读取ntfs和exfat格式的移动硬盘和闪存盘

    使用NTFS格式/exfat格式 centos默认不支持,需要安装ntfs-3g (用于支持NTFS格式的盘符) fuser(用于关闭进程) 安装 #yum -y install ntfs-3g fu ...

  5. linux-如何限制普通用户的磁盘使用空间-磁盘配额quota,Linux系统下如何进行磁盘配额Quota的设置...

    Linux如何进行磁盘配额quota的设置 通过quota进行磁盘配额,可以控制用户对磁盘空间和文件的控制,我们以一个实例作为说明,对2个用户user01.user02分别进行磁盘使用空间和创建文件的 ...

  6. aix磁盘挂载到linux,AIX下文件系统挂载点相互调换方案

    由于业务发展的需要,企业在异地实现了数据块级的灾备,由于原来的备份目录lv所在VG恰好在远程灾备VG内(该方案实现的是vg级别的数据同步),为了节省带宽所以又从存储上新划分出一块磁盘新建了一个vg作为 ...

  7. Linux系统下的硬盘分区、格式化与挂载

    以下内容源于网络资源的学习与整理,如有侵权请告知删除. 参考内容 分区是什么意思_360问答 磁盘分区_360百科 挂载_360百科 fdisk对一个块设备进行分区_XZY028的博客-CSDN博客_ ...

  8. 在Linux系统下制作U盘启动盘

    本文介绍在Linux系统中制作U盘启动盘的三种方法:使用启动盘创建器.dd命令和Etcher,以下以优麒麟Ubuntu Kylin 19.04为例,为你介绍这三种方法.如果要在Windows中制作U盘 ...

  9. 更改计算机硬盘名字,如何修改盘符 – 磁盘及光驱名称错乱,教你怎么更改回来...

    一般情况下,打开"我的电脑"后,我们会看到排在前面是硬盘,紧接着的是光驱,然后是插上去的可移动磁盘或U盘.但有时我们可能会神奇地发现硬盘盘符及光盘驱动器名称及排列错乱了.比如正常情 ...

最新文章

  1. etcd 笔记(05)— etcd 代码结构、各模块功能、整体架构、各模块之间的交互、请求和应答流程
  2. 11.swift 单例
  3. Spring5.0 Kafka2.11
  4. MFC 类库结构 总结
  5. 【转载 | 笔记】IIS无法删除应该程序池 因为它包含X个应用程序
  6. Linux硬盘检测命令smartctl
  7. python怎么写出正弦图_如何使用python在图像上生成随机正弦条纹?
  8. 比目鱼搜索不能用了_win10搜索功能失效解决办法
  9. 图相处理自学(一):数字图像基本概念
  10. gstreamer插件特别要注意事件处理(含代码范例)
  11. hot-S22和X参数的原理(转)
  12. 软考中级网络工程师全面学习笔记第1版(近4万字)
  13. 台达plc自由口通讯_台达PLC串行通讯应用原理
  14. 【Get深一度】小波分析概念3——正则性是什么意思,通俗解释
  15. 2022最新 Emlog新版导航源码 带用户中心
  16. react中请求网络图片加载不出来的问题 解决
  17. 【笔记】lua - 协程
  18. android判断两个图片相同,android中比较两张图片的相似度
  19. 发现了JMX的好东西,大家分享一下!!
  20. 【csv乱码】csv文件打开乱码的情况

热门文章

  1. 读文献—基于深度学习模型的APT检测
  2. 推荐几款好用的办公软件
  3. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——实战二:简易登录+找回密码
  4. 随机森林算法的Python实现
  5. vue2.0实战案例之高级教程-老孟编程
  6. Python+Selenium,实现贴吧自动发帖
  7. 知识蒸馏怎么用?召回-粗排篇
  8. 快速排序 Quick Sort
  9. 水清冷冷:After Effects 2020(AE2020)图文版安装教程(附工具)
  10. IP地址转化(学习笔记)