![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 07:32 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]求判断当前分区的批处理 |
| 可打印版本 831 / 6 |
| 第1楼 cmyhome | 发表于 2008-07-28 22:56 |
| 初级用户 发帖 30 积分 74 | |
|
[求助]求判断当前分区的批处理 求判断当前分区是第几个硬盘的第几个分区的批处理,就象GHOST里的第一硬盘第一分区表示为1:1.
|
|
| 第2楼 terse | 发表于 2008-07-28 23:05 |
| 银牌会员 发帖 946 积分 2,404 | |
|
系统环境?
|
|
| 第3楼 cmyhome | 发表于 2008-07-29 21:05 |
| 初级用户 发帖 30 积分 74 | |
|
运行环境是DOS & WindowsXP.
我是想在WinXP下运行,判断当前系统中硬盘的最后一个分区是什么,再把这个变量赋值给GHOST作参数使用,这在WinXP下当然没问题,但如果用C:;D:;E:.....表示,则在DOS下含NTFS分区就会出现盘符错乱,用1:1这种方式就没问题.(两种方式GHOST都能接受). 请高手赐教!谢谢. |
|
| 第4楼 HAT | 发表于 2008-07-29 21:23 |
| 版主 发帖 5,017 积分 9,023 | |
| 第5楼 xypcmac | 发表于 2008-07-30 00:17 |
| 初级用户 发帖 80 积分 167 | |
|
比较简单的是用 Ghost32 本身或第三方软件 dsptw(本论坛有)来实现
提供两种参考方法(其实道理是一样的): 一、 Ghost32 方案,find_hp.BAT 内容如下: @echo off :: 查找第n个硬盘最后分区 Ghost32 -DD>nul set p=%1 call :start 1 2 3 4 5 6 7 8 9 10 goto end :start find /i "%p%:%1" GHSTSTAT.TXT >nul if not errorlevel 1 set gDrv=%p%:%1 if errorlevel 1 goto end Shift goto start :end 二、DSPTW 方案,find_hp.BAT 内容如下: @echo off :: 查找第n个硬盘最后分区 dsptw /a /pdr>disk.txt set p=%1 call :start 1 2 3 4 5 6 7 8 9 10 goto end :start find /i "%p%:%1" disk.txt >nul if not errorlevel 1 set gDrv=%p%:%1 if errorlevel 1 goto end Shift goto start :end 使用说明:find_hp.BAT 硬盘号(从1开始),如:“find_hp.BAT 1” 表示查找第1硬盘最后分区。最后可以在Ghost32中调用%gDrv%这个变量,得到变量形式如:“1:3” |
|
| 第6楼 cmyhome | 发表于 2008-07-30 12:10 |
| 初级用户 发帖 30 积分 74 | |
|
还是没搞明白,我把我的批处理贴出来请高手帮忙改下,谢谢:
@ECHO off FOR %%c in (Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D) do ( IF exist %%c: (MD %%c:\GHO>nul ECHO GHOST -CLONE,MODE=PDUMP,SRC=1:1,DST=%%c:\GHO\SYSTEM.GHO -SURE -Z9 -FX>nul>C:\DOS\BAK.BAT ECHO GHOST -CLONE,MODE=PLOAD,SRC=%%c:\GHO\SYSTEM.GHO:1,DST=1:1 -SURE -RB>nul>C:\DOS\GHO.BAT && GOTO :EOF )) 这个批处理的作用是在C:\DOS目录下生成2个批处理供Autoexec.bat调用,分别用于GHO文件的备份和恢复.只是如何把%%c搞成1:1这种形式呢? |
|
| 第7楼 xypcmac | 发表于 2008-07-30 13:21 |
| 初级用户 发帖 80 积分 167 | |
|
主要是你每次说的都不同,下面我给一些调用代码你参考...
一、 Ghost32 方案,find_hp.BAT 内容如下: ------------------------------------------------------------ @echo off Ghost32 -DD>nul for /f "tokens=3* delims= " %%i in ('type GHSTSTAT.TXT^|find /i "%1: "') do set Pn=%%i set Pn=%Pn:~0,3% goto end :end ------------------------------------------------------------ 二、DSPTW 方案,find_hp.BAT 内容如下: ------------------------------------------------------------ @echo off dsptw /a /pdr>disk.txt for /f "tokens=1* delims= " %%i in ('type disk.txt^|find /i "%1:"') do set Pn=%%i set Pn=%pn:~-3% goto end :end ------------------------------------------------------------ 使用方法:在批处理中调用 “find_hp.BAT disk” 即可。例如:我要得到 D 盘的Ghost 磁盘分区号,只要:“find_hp.BAT D” ,结果 %Pn% 就是你所要的。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |