Board logo

标题: 求助,判断最后一个分区是否可用 [打印本页]

作者: zihan     时间: 2010-12-16 07:31    标题: 求助,判断最后一个分区是否可用

经常给人装机,习惯用雨林木风的onekey备份,但是它有个问题,如果硬盘最后一个分区是个隐藏分区(非FAT32或NTFS)时,批处理还是会将GHOST的备份路径设置到这个分区,我想修改一下,能不能检测到最后一个分区后,检测一下是否可写,如果不可写就向前推进一个盘符再次检测。

例如:有C、D、E、F、G;5个分区,G为隐藏区,
第一步:扫描出最后一个分区(G)
第二步:检测到G再检查G是否可写,不行就跳过,再次检测上一分区(F)
第三步:如果G盘可写,再检查G盘是否为当前运行的批处理所在区
依次直到D盘(当然不能到C盘,因为C盘是系统盘)

以下为雨林木风的P处理
@echo off
set actp=
minito /nohp /p /ifs>mini_dd.txt
set line=1
:beginmini
strings line=add %line%,1
strings lined=read mini_dd.txt,%line%
if %lined%#==# goto endmini
strings row1=left %lined%,3
strings row2=mid %lined%,8,2
strings row5=mid %lined%,19,3
strings int=find %lined%,:
strings row0=left %lined%,%int%
if not %actp%#==# goto mini_1
if %row5%#==YES# set actp=%row1%
if %row5%#==YES# set disk=%row0%
:mini_1
if %row0%#==%disk%# set lastd=%row1%
if %row0%#==%disk%# set lastp=%row2%
goto beginmini
:endmini
del mini_dd.txt
echo > date
strings date=filedate date
strings year=right %date%,4
strings month=left %date%,5
set date=%year%-%month%
strings time=filetime date
strings time=left %time%,5
strings hour=left %time%,2
strings minute=right %time%,2
set hm=%hour%-%minute%
del date
set int=1
if exist %lastp%\Ghost..\%date%_%hm%.GHO goto begingfile
set gbfile=%lastd%\Ghost..\%date%_%hm%.GHO
goto endgfile
:begingfile
set isexist=
if exist %lastp%\Ghost..\%date%_%hm%_%int%.GHO set isexist=1
if %isexist%#==1# strings int=add %int%,1
if %isexist%#==1# goto begingfile
set gbfile=%lastd%\Ghost..\%date%_%hm%_%int%.GHO
:endgfile
作者: DXSX     时间: 2010-12-17 20:58
你的想法本身就有问题,现在电脑都用ntfs分区了,如果目标电脑的分区全是ntfs,也就是你说的 都“不能用”,这个脚本就没办法用了。
所以人家设计成不管最后分区是什么格式,只要ghost能够识别就备份到该分区。
作者: jh1688     时间: 2010-12-18 12:34
楼上说得对,N分区可读写的方法N多,只要你能判断出最后一个分区可用(即空间能放下一个GHOST文件,我想最大不会超过5G吧??)就可以直接GHOST在最后一个分区……