中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]批处理如何根据卷标确定分区盘符
<<   [1] [2]  >>   >
作者:
标题: [已结]批处理如何根据卷标确定分区盘符 上一主题 | 下一主题
yy169
初级用户





积分 30
发帖 18
注册 2007-5-26
状态 离线
『楼 主』:  [已结]批处理如何根据卷标确定分区盘符

谁可以帮忙写一个批处理,原理大概是这样:某分区里面存有ghost的备份文件,不知道分区的盘符,但知道这个分区的卷标,如何根据硬盘分区的卷标(比如system)来判断这个分区的盘符(比如F),以便可以让ghost可以定位到具体的分区,读取gho文件恢复系统。 另外,虽然gho文件存放位置不固定(可能在第4 分区),但ghost是可以直接定位到某一个分区的,因此,如能用批处理判断gho文件在第几分区,应该也可以实现。 如能解答,非常感谢!!! [ Last edited by HAT on 2008-11-10 at 15:11 ]


2008-11-9 23:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

本版搜索"卷标",能够找到以下帖子: www.cn-dos.net/forum ... 请问楼主是如果搜索的呢?还是根本没有搜索? Q: 如何使用论坛的搜索功能来解决自己的问题? A: 参考:www.cn-dos.net/forum ...




2008-11-10 10:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy169
初级用户





积分 30
发帖 18
注册 2007-5-26
状态 离线
『第 3 楼』:  

不好意思,我是搜索过的,只不过搜索关键词为:判断盘符,盘符。却没想到用卷标做关键词,是我太笨了,请版主见谅!谢谢!


2008-11-10 15:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 4 楼』:  

2003下还可以用DISKPART 其它系统不知道支不支持。 需要开启磁盘管理服务。 DISKPART> select disk 0 磁盘 0 现在是所选磁盘。 DISKPART> DETAIL disk WDC WD800BB-22JHA0 磁盘 ID: 624AA2E0 类型 : ATA 总线 : 0 目标 : 0 LUN ID : 0 卷 ### Ltr 卷标 Fs 类型 大小 状态 信息 ---------- --- ----------- ----- ---------- ------- --------- -------- 卷 1 C NTFS 磁盘分区 8 GB 状态良好 系统 卷 2 D SOFTWARE NTFS 磁盘分区 24 GB 状态良好 卷 3 E MEDIA NTFS 磁盘分区 24 GB 状态良好 卷 4 F BACKUP NTFS 磁盘分区 18 GB 状态良好 [ Last edited by yishanju on 2008-11-10 at 16:06 ]




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2008-11-10 16:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Test>DISKPART /? Microsoft DiskPart version 5.1.3565 Copyright (C) 1999-2003 Microsoft Corporation. On computer: HAT Microsoft DiskPart syntax: diskpart [/s <script>] [/?] /s <script> - Use a DiskPart script. /? - Show this help screen.




2008-11-10 16:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jh1688
中级用户





积分 248
发帖 126
注册 2008-5-30
状态 离线
『第 6 楼』:  

这是我(一个菜鸟)用本论坛的一些资料自己拼凑的小东东,FAT32格式下肯定可以用,NFST(可能拼错)格式我没有,不知道行不行,请楼主自己试一下,注意:只能用在纯DOS下,CMD窗口下肯定不行!!!! if exist mini_dd.txt del mini_dd.txt if exist test.txt del test.txt minito /nohp /p /ifs>mini_dd.txt strings lines=LINESIZE mini_dd.txt strings lines=add %lines%,1 set line=1 :hfgho_1 strings line=add %line%,1 if %line%#==%lines%# goto hfgho_2 strings lined=read mini_dd.txt,%line% strings row1=left %lined%,3 strings row3=mid %lined%,8,2 strings row5=mid %lined%,19,3 echo %row3% >>test.txt goto hfgho_1 :hfgho_2 strings linesize=linesize test.txt strings drv=read test.txt,1 strings linesize=add %linesize%,1 set number=1 :hfgho_3 if %number%#==%linesize%# goto hfgho_4 strings number=add %number%,1 strings drv=read test.txt,%number% for %%i in (%drv%) do dir /a-d /b /s %%i\*.gho >nul >temp.txt find /i ".gho" temp.txt >nul type temp.txt | lmod set lastdrv=[] >temp.bat call temp.bat >nul goto hfgho_3 :hfgho_4 if %lastdrv%#==# goto hfqt_2 del test.txt >nul del mini_dd.txt >nul del temp.bat >nul del temp.txt >nul Ghost -clone,mode=pload,src=%lastdrv%:1,dst=%actp% -sure -fx goto cqdn


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





积分 30
发帖 18
注册 2007-5-26
状态 离线
『第 7 楼』:  

不回复一下对不起大家。我根据HAT版主的提示找到了那个帖子,里面有2个批处理,分别测试了一下,xp系统下识别普通分区没问题。由于我的批处理是在pe下运行的,而且gho文件是存放在隐藏分区(进pe后会自动分配盘符),进一步在pe环境下测试,发现第一个批处理要用到wmic服务,而pe没加载,所以放弃了;第二个批处理用到了mountvol命令,发现隐藏分区虽然已经分配了盘符,mountvol命令还是无法识别,所以失败了。不过,给了我启发,正在研究怎么用for命令去实现。 刚才上来一看大家又说了一个diskpart,这个命令我稍了解,很强大,不过我不知道怎么用批处理来实现我的目的。只好暂时先放一边了。 再次感谢大家的帮忙。


2008-11-11 00:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy169
初级用户





积分 30
发帖 18
注册 2007-5-26
状态 离线
『第 8 楼』:  

另外,6楼的批处理我看不大明白,比较复杂,而且是dos下的,无法采用,谢过了!


2008-11-11 00:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy169
初级用户





积分 30
发帖 18
注册 2007-5-26
状态 离线
『第 9 楼』:  

经过摸索,终于成功,现把自己改写的批处理贴出来,请大家指点! ========================= @echo off echo c: >vol.txt echo d: >>vol.txt echo e: >>vol.txt echo f: >>vol.txt echo g: >>vol.txt for /f %%i in (vol.txt) do (vol %%i | findstr /ic:"是 winxp">nul && set drive=%%i) echo 卷标为winxp的盘符是%drive% del vol.txt pause ==========================


2008-11-11 01:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 10 楼』:  

@echo off
for %%a in (C D E F G) do (
  for /f "eol=卷 tokens=3*" %%i in ('vol %%a:') do (
    if /i "%%j"=="winxp" set drive=%%a & goto next
  )
)
:next
echo 卷标为 winxp 的盘符是 %drive%
pause
P.S.,不用判断存在哪些盘符和中英文系统吗?


2008-11-11 01:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 11 楼』:  

Originally posted by yy169 at 2008-11-11 01:24: 经过摸索,终于成功,现把自己改写的批处理贴出来,请大家指点! ========================= @echo off echo c: >vol ...
兼容性欠佳。 当然,自己用是没问题的。




Windows 一键还原 www.yjhy.com
2008-11-11 08:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

下次提问,建议在顶楼把自己的真实环境和要求一次性描述清楚。




2008-11-11 09:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

这样是不是简洁一些?
@echo off
for %%i in (c d e f g) do (
  vol %%i:|findstr /ic:"是 winxp">nul && set drive=%%i
)
echo 卷标为winxp的盘符是%drive%
pause




2008-11-11 09:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy169
初级用户





积分 30
发帖 18
注册 2007-5-26
状态 离线
『第 14 楼』:  

回tireless:这个批处理的确没有考虑到存在哪些盘符和系统语言的问题,就盘符问题,我也在想怎么用批处理获取当前存在的盘符,暂时没答案。不过,由于硬盘是我自己分区的,所以盘符的范围我可以确定,把范围扩大一点应该就可以达到目的,虽然不是很理想。另外,由于是中文pe,所以也不再考虑系统语言问题了。谢谢你的提醒! 回lianjiang2004:正如你所言,我的批处理兼容性很差,因为没搜索所有可能存在的盘符。其原因跟我上面说的一样。之所以贴出来,一来抛砖引玉,二是要给大家一个结果。谢谢! 回HAT版主:接受你的批评和建议,还有你的简洁的批处理,谢谢!


2008-11-11 10:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yy169
初级用户





积分 30
发帖 18
注册 2007-5-26
状态 离线
『第 15 楼』:  

再次进行修改,可以检索所有已存在的盘符(除A、B)的卷标,代码如下,请大家指点! @echo off if exist vol.txt del vol.txt 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 ( if exist %%i:\ echo %%i >> vol.txt ) for /f %%i in (vol.txt) do ( vol %%i: | findstr /ic:"是 winxp">nul && set drive=%%i ) echo 卷标为winxp的盘符是%drive% del vol.txt>nul pause


   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-11-12 09:48


2008-11-11 13:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: