![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 11:04 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]批处理如何根据卷标确定分区盘符 |
| 可打印版本 2,360 / 16 |
| 第1楼 yy169 | 发表于 2008-11-09 23:20 |
| 初级用户 发帖 18 积分 30 | |
|
[已结]批处理如何根据卷标确定分区盘符 谁可以帮忙写一个批处理,原理大概是这样:某分区里面存有ghost的备份文件,不知道分区的盘符,但知道这个分区的卷标,如何根据硬盘分区的卷标(比如system)来判断这个分区的盘符(比如F),以便可以让ghost可以定位到具体的分区,读取gho文件恢复系统。
另外,虽然gho文件存放位置不固定(可能在第4 分区),但ghost是可以直接定位到某一个分区的,因此,如能用批处理判断gho文件在第几分区,应该也可以实现。 如能解答,非常感谢!!! [ Last edited by HAT on 2008-11-10 at 15:11 ] |
|
| 第2楼 HAT | 发表于 2008-11-10 10:39 |
| 版主 发帖 5,017 积分 9,023 | |
|
本版搜索"卷标",能够找到以下帖子:
http://www.cn-dos.net/forum/viewthread.php?tid=43521 请问楼主是如果搜索的呢?还是根本没有搜索? Q: 如何使用论坛的搜索功能来解决自己的问题? A: 参考:http://www.cn-dos.net/forum/viewthread.php?tid=44122#pid308085 |
|
| 第3楼 yy169 | 发表于 2008-11-10 15:10 |
| 初级用户 发帖 18 积分 30 | |
|
不好意思,我是搜索过的,只不过搜索关键词为:判断盘符,盘符。却没想到用卷标做关键词,是我太笨了,请版主见谅!谢谢!
|
|
| 第4楼 yishanju | 发表于 2008-11-10 16:03 |
| 银牌会员 发帖 1,357 积分 1,488 | |
|
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 ] |
|
| 第5楼 HAT | 发表于 2008-11-10 16:57 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 5楼 Microsoft Windows XP
(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> - Use a DiskPart script. /? - Show this help screen. |
|
| 第6楼 jh1688 | 发表于 2008-11-10 17:10 |
| 中级用户 发帖 126 积分 248 | |
|
这是我(一个菜鸟)用本论坛的一些资料自己拼凑的小东东,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 |
|
| 第7楼 yy169 | 发表于 2008-11-11 00:18 |
| 初级用户 发帖 18 积分 30 | |
|
不回复一下对不起大家。我根据HAT版主的提示找到了那个帖子,里面有2个批处理,分别测试了一下,xp系统下识别普通分区没问题。由于我的批处理是在pe下运行的,而且gho文件是存放在隐藏分区(进pe后会自动分配盘符),进一步在pe环境下测试,发现第一个批处理要用到wmic服务,而pe没加载,所以放弃了;第二个批处理用到了mountvol命令,发现隐藏分区虽然已经分配了盘符,mountvol命令还是无法识别,所以失败了。不过,给了我启发,正在研究怎么用for命令去实现。
刚才上来一看大家又说了一个diskpart,这个命令我稍了解,很强大,不过我不知道怎么用批处理来实现我的目的。只好暂时先放一边了。 再次感谢大家的帮忙。 |
|
| 第8楼 yy169 | 发表于 2008-11-11 00:22 |
| 初级用户 发帖 18 积分 30 | |
|
另外,6楼的批处理我看不大明白,比较复杂,而且是dos下的,无法采用,谢过了!
|
|
| 第9楼 yy169 | 发表于 2008-11-11 01:24 |
| 初级用户 发帖 18 积分 30 | |
|
经过摸索,终于成功,现把自己改写的批处理贴出来,请大家指点!
========================= @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 ========================== |
|
| 第10楼 tireless | 发表于 2008-11-11 01:38 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
P.S.,不用判断存在哪些盘符和中英文系统吗? |
|
| 第11楼 lianjiang2004 | 发表于 2008-11-11 08:53 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by yy169 at 2008-11-11 01:24: 兼容性欠佳。 当然,自己用是没问题的。 |
|
| 第12楼 HAT | 发表于 2008-11-11 09:41 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 7楼 下次提问,建议在顶楼把自己的真实环境和要求一次性描述清楚。
|
|
| 第13楼 HAT | 发表于 2008-11-11 09:44 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 9楼 这样是不是简洁一些?
|
|
| 第14楼 yy169 | 发表于 2008-11-11 10:39 |
| 初级用户 发帖 18 积分 30 | |
|
回tireless:这个批处理的确没有考虑到存在哪些盘符和系统语言的问题,就盘符问题,我也在想怎么用批处理获取当前存在的盘符,暂时没答案。不过,由于硬盘是我自己分区的,所以盘符的范围我可以确定,把范围扩大一点应该就可以达到目的,虽然不是很理想。另外,由于是中文pe,所以也不再考虑系统语言问题了。谢谢你的提醒!
回lianjiang2004:正如你所言,我的批处理兼容性很差,因为没搜索所有可能存在的盘符。其原因跟我上面说的一样。之所以贴出来,一来抛砖引玉,二是要给大家一个结果。谢谢! 回HAT版主:接受你的批评和建议,还有你的简洁的批处理,谢谢! |
|
| 第15楼 yy169 | 发表于 2008-11-11 13:46 |
| 初级用户 发帖 18 积分 30 | |
|
再次进行修改,可以检索所有已存在的盘符(除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 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |