中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]求判断当前分区的批处理
作者:
标题: [求助]求判断当前分区的批处理 上一主题 | 下一主题
cmyhome
初级用户





积分 74
发帖 30
注册 2006-6-1
状态 离线
『楼 主』:  [求助]求判断当前分区的批处理

求判断当前分区是第几个硬盘的第几个分区的批处理,就象GHOST里的第一硬盘第一分区表示为1:1.

2008-7-28 22:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 2 楼』:  

系统环境?



简单!简单!再简单!
2008-7-28 23:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cmyhome
初级用户





积分 74
发帖 30
注册 2006-6-1
状态 离线
『第 3 楼』:  

运行环境是DOS & WindowsXP.
我是想在WinXP下运行,判断当前系统中硬盘的最后一个分区是什么,再把这个变量赋值给GHOST作参数使用,这在WinXP下当然没问题,但如果用C:;D:;E:.....表示,则在DOS下含NTFS分区就会出现盘符错乱,用1:1这种方式就没问题.(两种方式GHOST都能接受).
请高手赐教!谢谢.

2008-7-29 21:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  


@echo off
set AllDrive=c d e f g h i j k l m n o p q r s t u v w x y z
for %%a in (%AllDrive%) do (
  for /f %%h in ('fsutil fsinfo drivetype %%a: ^| findstr /i "Drive"') do set LastDri=%%h
)
echo %LastDri%




2008-7-29 21:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xypcmac
初级用户





积分 167
发帖 80
注册 2005-11-7
状态 离线
『第 5 楼』:  

比较简单的是用 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”

2008-7-30 00:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cmyhome
初级用户





积分 74
发帖 30
注册 2006-6-1
状态 离线
『第 6 楼』:  

还是没搞明白,我把我的批处理贴出来请高手帮忙改下,谢谢:

@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这种形式呢?

2008-7-30 12:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xypcmac
初级用户





积分 167
发帖 80
注册 2005-11-7
状态 离线
『第 7 楼』:  

主要是你每次说的都不同,下面我给一些调用代码你参考...

一、 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% 就是你所要的。

2008-7-30 13:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: