|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第
31 楼』:
系统盘为: D:, 分区号为: 3, 镜像占用约为: 454 MB.
备份盘为: H: (DOS:H:), 分区号为: 6, 剩余空间约为: 1284 MB.
分区号为:3 这个应该是2吧!我的硬盘分区没有NTFS格式的,不知如何测试?且我不需要这么多的结果,只需知道最后盘符就行。
|
|
2007-12-23 08:09 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
32 楼』:
仅是个人的一点经验,仅供参考。
[ Last edited by lianjiang2004 on 2007-12-24 at 08:01 AM ]
|
Windows 一键还原
http://www.yjhy.com |
|
2007-12-23 08:30 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第
33 楼』:
有进展了,qzwqzw 的例子修改如下:
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1" %%i in ('wmic logicaldisk where "drivetype=3" get FileSystem') do (
set filesystem=%%i
if "!filesystem:~0,3!"=="FAT" set /a id+=1
)
echo %id%
set Drive=CDEFGHIJKLMNOPQRSTUVWXYZ
set lastdrive=!Drive:~%id%,1!:
echo %lastdrive%
pause 返回值与目标不符!
返回值 ID=6
目标盘符 =I: (这里应该是H:才对)
|
|
2007-12-23 09:02 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第
34 楼』:
现在唯有将
set Drive=CDEFGHIJKLMNOPQRSTUVWXYZ
修改为(=号后加空格)
set Drive= CDEFGHIJKLMNOPQRSTUVWXYZ
这样才对。
谁能帮忙解答为什么会出现这种情况?
谁能再为上面的代码精简一下?
|
|
2007-12-23 09:06 |
|
|
qzwqzw
银牌会员
天的白色影子
积分 2342
发帖 635
注册 2004-3-6
状态 离线
|
『第
35 楼』:
@echo off & setlocal EnableDelayedExpansion
set drives= CDEFGHIJKLMNOPQRSTUVWXYZ
for /f %%i in ('wmic logicaldisk get FileSystem ^| find /c "FAT"') do set lastdrive=!drives:~%%i,1!
echo 在纯DOS下最后一个可识别的硬盘分区的盘符为:%lastdrive% 这是专为你的应用精简的代码
但是我感觉这个方案如果用于系统备份分区的选择考虑很不周全
不知你是否考虑过分区的剩余空间是否满足要求
以及USB-HDD引导后盘符发生移位的可能
至于我的上一段代码的问题可能源于你的WMIC的输出比较特殊
如果有兴趣的话可以单独将WMIC的输出结果贴上来看看
你的修改代码返回值不符的问题在于你没有完全理解 set 的取子串规则
set 取字串的下标是从0算起的
也就是说~0代表第一个字符,~1代表第二个字符
[ Last edited by qzwqzw on 2007-12-23 at 01:55 PM ]
|
|
2007-12-23 13:46 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
|
2007-12-23 15:38 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
|
2007-12-23 16:14 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第
38 楼』:
Quote: | Originally posted by lianjiang2004 at 2007-12-23 04:14 PM:
通用性很怀疑。呵呵。 |
|
你的技术也值得怀疑啊!:D 说了这么多对我的问题一点也帮不上忙。
说笑!别见怪!
|
|
2007-12-23 16:33 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第
39 楼』:
正所谓一样通百样明,不完善的地方我会慢慢地去处理的。
qzwqzw 对此帮忙功不可没,衷心感谢。犹其是30楼的代码,以后还有参考的地方。
|
|
2007-12-23 16:36 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第
40 楼』:
选择优化方案
以下是 35 楼发贴我想的精简方案:
@echo off
setlocal EnableDelayedexpansion
for /f "tokens=1" %%i in ('wmic logicaldisk where "drivetype=3" get FileSystem ^|findstr "FAT"') do set /a id+=1
set Drive= CDEFGHIJKLMNOPQRSTUVWXYZ
set lastdrive=!Drive:~%id%,1!:
echo %lastdrive%
pause>nul 以下是 35 楼的精简方案:
@echo off & setlocal EnableDelayedExpansion
set drives= CDEFGHIJKLMNOPQRSTUVWXYZ
for /f %%i in ('wmic logicaldisk get FileSystem ^| find /c "FAT"') do set lastdrive=!drives:~%%i,1!
echo 在纯DOS下最后一个可识别的硬盘分区的盘符为:%lastdrive% 虽然我的精简方案比较长,35 楼的方案精简,运行后大家估计会如何?
1、我的显示速度快,35 楼的比较慢;
2、我的运行很安静,35 楼的会响一声(读软驱)。
|
|
2007-12-23 16:52 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第
41 楼』:
最后总结
@echo off
setlocal EnableDelayedExpansion
set drives= CDEFGHIJKLMNOPQRSTUVWXYZ
for /f %%i in ('wmic logicaldisk where "drivetype=3" get FileSystem ^| find /c "FAT"') do set lastdrive=!drives:~%%i,1!:
echo %lastdrive%
pause>nul
|
|
2007-12-23 16:59 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
42 楼』:
这里高手如云,关于你要的windows下获取盘符的办法,我就没有发言的资格了。
不过,我想,在前面几楼里,指出的需要注意的几个问题,难道对你没益处吗?
[ Last edited by lianjiang2004 on 2007-12-24 at 08:00 AM ]
|
Windows 一键还原
http://www.yjhy.com |
|
2007-12-23 20:43 |
|
|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
43 楼』:
是啊,这种方案只能针对一个硬盘主分区的情况,如果有多个主分区,就完全不适用,还是ghost的1:x指定分区的方式比较稳定可靠。gghost好象就使用了这种方案。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2007-12-23 21:13 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
44 楼』:
限于水平,很遗憾没能直接帮上你的忙,希望指出的一些其它问题,也能引起你的足够重视。
[ Last edited by lianjiang2004 on 2007-12-24 at 07:59 AM ]
|
Windows 一键还原
http://www.yjhy.com |
|
2007-12-23 21:30 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第
45 楼』:
在这里隆重的热烈的谢谢 lianjiang2004
确实获益非浅。
复43楼:这个是我帮人家装机时用的,一般处理如下:
1、在需要重装的电脑上备份驱动到U盘
2、带DOS启动的XPSP2安装盘一张:分区(SPFDISK.EXE)、传送DOS系统(SYS.COM)、光盘方式安装XPSP2(自制精简版)
3、第二次启动时备份一次(无驱动备份)
4、安装驱动
5、运行自制程序:服务优化、文件夹转移、影子系统、恢复软件、DOS文件
6、再次备份一次系统(带驱动备份)
7、安装常用软件
8、最后再备份一次系统
注:因使用精简版,所以精简的系统也就 2?? MB
最后备份的一般也超不过 1 G
各位看上面就知道,本人全程监控的,还需检测容量、分区错乱等等的必要吗?
|
|
2007-12-24 10:05 |
|