无忧启动论坛

标题: 全面更新:超小盘符调整批处理 [打印本页]

作者: lelexiong    时间: 2009-6-4 10:13
标题: 全面更新:超小盘符调整批处理
三个版本
1.orddrv1.cmd,小巧快速,不能调整移动硬盘;
2.orddrv2.cmd,能调整移动硬盘,需要MBRFIX.EXE;
3.orddrv3.cmd,能调整移动硬盘,严格按分区起始扇区来设定盘符需要MBRFIX.EXE,sort.exe。还有一个功能:如果你在windows中将某个分区挂在某个目录下,此程序不会为此分区设定盘符,而是自动将它挂在目录下,这是我写这个程序的主要动机。当然1,2也可加上此功能。

请在load *.ini前调用:exec =!cmd.exe /c "orddrv.cmd"

一点说明:我没有理会虚拟盘,个中原因想想就会请楚!

这几个程序比V8的短不少,我想也好看懂一些,希望有兴趣的朋友帮忙测试一下。

[ 本帖最后由 lelexiong 于 2009-6-8 18:35 编辑 ]

orddrv1.zip

543 Bytes, 下载次数: 168, 下载积分: 无忧币 -2

orddrv2.zip

768 Bytes, 下载次数: 104, 下载积分: 无忧币 -2

orddrv3.zip

974 Bytes, 下载次数: 119, 下载积分: 无忧币 -2

MBRFIX.zip

63.71 KB, 下载次数: 104, 下载积分: 无忧币 -2

sort.zip

11.28 KB, 下载次数: 93, 下载积分: 无忧币 -2


作者: victor888    时间: 2009-6-4 10:16
1. 需要你的下载

2. 想麻烦你报告一下不能正常运行的版本,以及结果。只有您报告了,我才能确定问题到底是什么。
作者: lelexiong    时间: 2009-6-4 10:24
标题: 回复 #2 victor888 的帖子
我挂了四个硬盘,分区的方式较多,你总使我的C:盘腾空,后面的盘符更乱!

原本想修改你的,因为太长,我没完全搞明白,就自己写了一个。
作者: lelexiong    时间: 2009-6-4 10:35
大家可以运行下面附件看看结果,他并不做盘符调整。

前面的是卸下的现有盘符,后面的是重新挂载的盘符与卷名对照表。

[ 本帖最后由 lelexiong 于 2009-6-8 17:42 编辑 ]
作者: NicTense    时间: 2009-6-4 10:41
原帖由 victor888 于 2009-6-4 10:16 发表
1. 需要你的下载

2. 想麻烦你报告一下不能正常运行的版本,以及结果。只有您报告了,我才能确定问题到底是什么。



至今都没看过那个文件的源程序,没特别注意到有什么问题

对了,想请教一下,如果我是把pe安装到硬盘上的,这个批处理是不是就没意义了
作者: hhh333    时间: 2009-6-4 12:38
原帖由 lelexiong 于 2009-6-4 10:13 发表
victor888 的orderdrv.cmd在我机子上一直不好使,于是便自己写了一个,还行!

只有40行,大小正好1K.
依赖三个命令:mountvol.exe, find.exe, reg.exe
请在load \*.ini 前执行exec =!cmd.exe /c "orddrv.c ...


真够简洁的,应该有用吧?
作者: victor888    时间: 2009-6-4 12:59
LZ写的不错,提点问题:

1. 程序中没有考虑排除虚拟盘符
如使用虚拟光驱软件、subst等命令获得的盘符。如果有这样的盘符,因mountvol无法获得他们的volume id必然造成批处理出错,被虚拟盘符占用的盘符无法分配给其他分区。

2. 如果有移动硬盘存在,那么不能指出哪些盘符是移动硬盘的,举个例子:
你现在有一块硬盘和一块移动硬盘,现在你又添加了一块硬盘,在你的移动硬盘连接电脑的情况下,那么这个批处理将把后添加的硬盘所有盘符排在移动硬盘之后。当然,这种情况比较少见。

3.容错处理
如果系统没有可移动设备和光驱,那么最后的for语句就不起作用,可以加几个if语句来判断变量是否定义,这样的容错功能会更好。

4.有待确认的一件事
mountvol命令所列出的volume id值是不是总是按升级排列的,我查看的几台电脑都是这样排的。我的未修改前程序,从注册表中读取的volume id也是按升序或降序排列的,但是就是因为这个经验错误,在我遇到了不按序排列的注册表后,程序出错了。这使得我找到了按分区的offset值来排序的方法。

因此,我请广大网友进行充分的测试并反馈。
==

另外,麻烦LZ一定将我的程序运行结果告诉我,我查找问题到底出在什么地方。
谢谢

[ 本帖最后由 victor888 于 2009-6-4 13:03 编辑 ]
作者: victor888    时间: 2009-6-4 13:00
原帖由 NicTense 于 2009-6-4 10:41 发表
至今都没看过那个文件的源程序,没特别注意到有什么问题
对了,想请教一下,如果我是把pe安装到硬盘上的,这个批处理是不是就没意义了


这东西是调整盘符错乱的,没有错乱当然不需要了,错不错乱只有自己试验。
作者: victor888    时间: 2009-6-4 13:07
原帖由 lelexiong 于 2009-6-4 10:24 发表
我挂了四个硬盘,分区的方式较多,你总使我的C:盘腾空,后面的盘符更乱!
原本想修改你的,因为太长,我没完全搞明白,就自己写了一个。


我的程序是不管你挂几块硬盘都支持的,还是希望你能提供详细的报告。当然,我们也可以讨论程序中的细节,有问题必须解决。
作者: victor888    时间: 2009-6-4 13:36
感谢LZ,我发现了我的程序中的BUG,我又添加了一块SATA硬盘,结果其序号变为0了,这样盘符确实会乱的,现在就改,一会儿推出。

另外,刚才验证了一下楼主的程序,我的系统有一个虚拟盘符,运行LZ的程序后出现“目录是空的”并自动退出,这验证了我的第1个预测。

现在我把虚拟盘符去除再试一下。
===
结果是新加入的硬盘,盘符顺序不对,这就验证了我的第4个猜测,即volume id 并不全是按照volume id升序排列的,这种情况并不只是两块或多块硬盘发生,一块硬盘上也可以出现。

本结果同时也证实了我的第2个预测,即在有USB硬盘存在的情况下,后加入的硬盘盘符会靠后的。

稍后上图说明。

测试条件,系统原有硬盘一块,USB硬盘一块,可移动硬盘一个,DVD一个,后又加入了一个SATA硬盘,下图1是运行批处理后的结果,其中磁盘0为新加入的SATA硬盘,磁盘1为系统原有硬盘,磁盘2为USB硬盘,磁盘3为U盘。

图2是运行mountvol结果。

[ 本帖最后由 victor888 于 2009-6-4 14:03 编辑 ]

盘符截图1.jpg (76.03 KB, 下载次数: 40)

图1

图1

盘符截图2.jpg (60.88 KB, 下载次数: 37)

图2

图2

作者: x.Nichdlas    时间: 2009-6-4 13:50
恭喜V版获新进展 也很欣喜坛里有技术交流使得彼此不断进步~
作者: loveknot    时间: 2009-6-4 15:59
能不能用啊,我下来试试
作者: lelexiong    时间: 2009-6-4 17:02
标题: 回复 #7 victor888 的帖子
自己在pe下使用,没考虑太多。既然有V8大大提出意见,我就也来考虑通用性

1.subst不能考虑。虚拟光驱、硬盘有些复杂,和所用软件有关,我大概看出了点门道,准备修改。
2.大人说之后又添加硬盘,是不是说在windows中,PE中没这机会呀。移动硬盘手中没有,有机会借个试试。
3.这个大人多虑了,要的就是for的这个效果。
4.我起先也考虑偏移,后来看mountvol命令所列出的卷名值好像总是按升级排列的,就写了这个。
  考虑偏移好像也无需其它程序,不过批处理要复杂不少,只好无限期延迟了。

虚拟光驱、硬盘确实麻烦,要保证可用,它的镜象文件(非内核镜像)所在盘的盘符就不能调整,
这使得整个调整失去意义,
只能要求虚拟盘挂在A:、B:、Y:或Z:之上,或者在调整之前不要挂虚拟盘

[ 本帖最后由 lelexiong 于 2009-6-4 19:53 编辑 ]
作者: hhh333    时间: 2009-6-4 19:24
原帖由 victor888 于 2009-6-4 13:36 发表
感谢LZ,我发现了我的程序中的BUG,我又添加了一块SATA硬盘,结果其序号变为0了,这样盘符确实会乱的,现在就改,一会儿推出。

另外,刚才验证了一下楼主的程序,我的系统有一个虚拟盘符,运行LZ的程序后出现 ...


我到原帖中去看了一下,还没有更新,期待最新的研究成果!
作者: hhh333    时间: 2009-6-4 19:26
原帖由 lelexiong 于 2009-6-4 17:02 发表
自己在pe下使用,没考虑太多。既然有V8大大提出意见,我就也来考虑通用性

1.subst不能考虑。虚拟光驱、硬盘有些复杂,和所用软件有关,我大概看出了点门道,准备修改。
2.大人说之后又添加硬盘,是不是说在 ...



lelexiong 兄的这个程序要有广泛的适应性,移动硬盘也必须要考虑的,期待一个简洁高效的新程序。
作者: sjstg    时间: 2009-6-4 20:51
thinkpad 的sl400分区后,重新恢复vista, 盘符经常错乱(因为sl400恢复分区共有2个。加上系统区。共3个分区)。不知道这个能不能解决
作者: lelexiong    时间: 2009-6-5 01:03
原帖由 hhh333 于 2009-6-4 19:26 发表



lelexiong 兄的这个程序要有广泛的适应性,移动硬盘也必须要考虑的,期待一个简洁高效的新程序。


移动硬盘考虑了,可惜用了mbrfix.exe
作者: ISO    时间: 2009-6-6 23:33
请问楼主,你顶楼上传了好几个,哪个是最新版本啊,怎么还有一个精简一下的版本?
作者: KK360    时间: 2009-6-7 01:16
不太懂其中原理,先收下再说,谢谢楼主的作品。
作者: dragon_fly    时间: 2009-6-7 02:04
真够简洁的,谢谢分享了
作者: lelexiong    时间: 2009-6-7 02:27
标题: 回复 #18 ISO 的帖子
对不起,我不知道怎样删除附件,所以才出现这种现象,很抱歉。
我手上有三种版本:
1.简洁版:不能调整移动硬盘盘符,速度快,无需mbrfix.exe
2.加强版:能调整移动硬盘盘符,需要mbrfix.exe
3.严谨版:就是严谨啰,速度比第一个慢,需要mbrfix.exe,sort.exe
每一个版本还有一个定制版,如果你不喜欢太多盘符,而喜欢将分区挂在目录下,定制版可以做到这点。
我个人还是喜欢简洁版,用的是它的定制版,因为我从来不从移动硬盘引导系统,简洁版就很好了。
我现在不敢上传附件了,这里还是附上最新的简洁版[attach]63129[/attach],如果你有兴趣,我也可提供其他版本

[ 本帖最后由 lelexiong 于 2009-6-8 01:54 编辑 ]
作者: 梅边吹笛    时间: 2009-6-7 09:33
对楼主的东西比较有兴趣。请问楼主的三个不同大小的同名附件分别是楼主说的三个版本吗?望楼主注明一下并提供下载。谢谢!
作者: lelexiong    时间: 2009-6-7 11:35
标题: 回复 #22 梅边吹笛 的帖子
不是。想问一下如何删除附件?
作者: haiuyan    时间: 2009-6-8 11:51
不知何时更新上传?
作者: lelexiong    时间: 2009-6-8 17:43
已经上传,自己顶一下
作者: 12050202    时间: 2009-6-8 18:52
sort.exe

是否对XP.VISTA.2003

通用?
作者: lelexiong    时间: 2009-6-8 19:00
这个是xp sp3中的,不过在2003中是可用的。每个windows都有sort.exe的。

[ 本帖最后由 lelexiong 于 2009-6-8 19:26 编辑 ]
作者: 12050202    时间: 2009-6-8 19:15
原帖由 lelexiong 于 2009-6-8 19:00 发表
这个是xp sp3中的,不过在2003是可用的。每个windows都有的sort.exe的。



首页说清
要试用下
作者: edisonvon    时间: 2009-6-8 19:52
我对盘符的错与对不感冒,能做系统就可以
作者: ISO    时间: 2009-6-11 11:55
[quote]原帖由 lelexiong 于 2009-6-7 02:27 发表
多谢楼主的解释。你删除附件的方法如下图:

你编辑帖子,然后点击左下角的前面小方框(你要删除的那个附件前面),最后点击编辑帖子,就可以了



作者: hxshrimp    时间: 2009-6-11 13:57
不错的。我就喜欢这个批处理!
作者: cmdy268    时间: 2009-6-11 15:01
小巧实用,下载了,用一下。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3