![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 12:07 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 活动主分区、最后分区号与盘符的确定批处理 |
| 可打印版本 745 / 0 |
| 第1楼 lianjiang2004 | 发表于 2007-05-08 08:49 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
活动主分区、最后分区号与盘符的确定批处理 ghost自动备份时,活动主分区、最后分区号与盘符的确定思路和批处理(含win/dos下)
使用了第三方软件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,对上面的信息进行处理,获得活动主分区,及最后分区和最后分区对应的盘符。 二,具体方法。 @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 ============================= 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 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |