无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 20568|回复: 103
打印 上一主题 下一主题

用VBS实现磁盘盘符理顺

[复制链接]
跳转到指定楼层
1#
发表于 2008-11-4 13:30:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=129351&page=1&extra=page%3D2

1、需要向PE 植入 VBS支持 VBS.part1.rar (195.31 KB, 下载次数: 320) VBS.part2.rar (148.98 KB, 下载次数: 393) 这个rar文件释放到系统后运行VBS_SETUP.CMD就可以实现VBS脚本支持。VBS脚本的功能不必多说。除了实现磁盘盘符理顺以外,对文件的读取、修改、创建、对磁盘、系统信息的获取、系统功能增强等方面都是无法替代的。

2、因为PE核心植入VBS支持,实现硬盘盘符理顺将是一件非常简单的事情。针对目前需求特编辑此VBS脚本。用来理顺硬盘、u盘盘符。固定硬盘盘符正向理顺,CDEFGE...,闪存U盘盘符号逆向理顺,UTSRQPO......,光盘直接跳过,不予理顺。
解压得到 SET_DISK2.VBS 放在XYZ盘或者光盘,需要的时候用鼠标点击运行,就可以理顺磁盘盘符。

3、这个脚本不处理 光盘盘符,如果x盘被虚拟成 硬盘,就需要自己修改一下脚本。不然有可能x被卸掉。

脚本升级了,对于存在多个硬盘而cdrom盘符夹杂其中的情况,可能出现符号分配倒序的现象。同时 排除了ABWXYZ 六个盘。

郑重声明:没有一定vbs脚本修改能力,不要将这个脚本运行在xp系统!这个脚本是为pe制定的。

这个脚本的工作原理:
1、搜集所有系统认出的本地硬盘、u盘、移动盘、光盘,并记录到 各自 dictionary 中
2、卸载全部硬盘、u盘
3、把系统认为是本地硬盘的各个分区重新排列 CDEFG 的顺序
4、把系统认为是移动磁盘的分区进行 UTSRQPO 的逆向顺序排列。

SET_DISK3.rar (782 Bytes, 下载次数: 175)
再次多谢大家的批评、指正、鼓励、支持和测试。

增加x2c脚本内容于一体 推出 set_disk4.vbs   SET_DISK4.rar (1.17 KB, 下载次数: 138)

更新 set_disk5.rar (13.18 KB, 下载次数: 184)
增加对 未知类型设备的 操作;增加循环退出条件防止死循环;增加运行前后磁盘分区个数对比检测;引入showdrive程序协助显示隐藏分区。


2008.11.10 更新 优化了一下脚本
set_disk6.rar (13.15 KB)


[ 本帖最后由 dos时代菜鸟 于 2008-11-10 18:50 编辑 ]
2#
发表于 2008-11-4 13:32:16 | 只看该作者
沙发,,先顶一个。。。。。
回复

使用道具 举报

3#
发表于 2008-11-4 14:10:47 | 只看该作者
值得一试,支持一个先。。。
回复

使用道具 举报

4#
发表于 2008-11-4 14:18:36 | 只看该作者
先下载研究
回复

使用道具 举报

5#
发表于 2008-11-4 14:25:27 | 只看该作者
不敢运行。

这个东西,对于USB HARD DISK,没有考虑。
另外,对于系统盘符是如何考虑的,也没说。
还有,对于虚拟盘符,如虚拟光盘和物理光盘好你是一视同仁,这样会不会造成虚拟光盘丢失?
回复

使用道具 举报

6#
发表于 2008-11-4 14:35:11 | 只看该作者
试试.....................
回复

使用道具 举报

7#
发表于 2008-11-4 14:50:26 | 只看该作者
不管怎样先试试看在说!
回复

使用道具 举报

8#
发表于 2008-11-4 15:49:59 | 只看该作者
支持......
试试先.....
回复

使用道具 举报

9#
发表于 2008-11-4 16:01:40 | 只看该作者
就是个PECMD在工作,VBS基本就是判断磁盘类型并计数,盘符也不是按照字母顺序来的。
我还得仔细看一下这个PECMD。
回复

使用道具 举报

10#
发表于 2008-11-4 16:10:38 | 只看该作者
我的u盘分为了U,感觉功能还好,就是本地和U盘不是连续的。。

楼主再改进下。弄个连续的。。
回复

使用道具 举报

11#
 楼主| 发表于 2008-11-4 16:17:08 | 只看该作者
我的u盘分为了U,感觉功能还好,就是本地和U盘不是连续的。。
楼主再改进下。弄个连续的。。

u盘的盘符是从u开始向前排列的。这样可以避免和本地盘混淆。



还有,对于虚拟盘符,如虚拟光盘和物理光盘好你是一视同仁,这样会不会造成虚拟光盘丢失?
这个脚本不考虑光盘序列调整,运行的时候会跳过光盘。同时也不会考虑a: b: y:
如果想让他不考虑x: 只需要 把x:添加到指定判断语句中(同y:)

[ 本帖最后由 dos时代菜鸟 于 2008-11-4 16:23 编辑 ]
回复

使用道具 举报

12#
发表于 2008-11-4 16:29:34 | 只看该作者
Z盘也可以不考虑,,因为Z盘很多时候会被占用。。我现在知道的就是二级扩展的PE和VCD.exe虚假光驱会占用。。

个人感觉U盘盘符从U开始没有什么不好,,仅仅是担心移动硬盘盘符分配问题。因为我没有移动硬盘,,所以无法测试。。
回复

使用道具 举报

13#
 楼主| 发表于 2008-11-4 16:35:16 | 只看该作者
原帖由 mapeimapei 于 2008-11-4 16:29 发表
Z盘也可以不考虑,,因为Z盘很多时候会被占用。。我现在知道的就是二级扩展的PE和VCD.exe虚假光驱会占用。。
个人感觉U盘盘符从U开始没有什么不好,,仅仅是担心移动硬盘盘符分配问题。因为我没有移动硬盘, ...


移动硬盘会被认成 固定硬盘,排列到 本地硬盘序列后面的。
如果z被虚拟成光盘,就不用担心了,因为不处理光盘!

如果需要修改 把xyz 都考虑进来,只需要修改一句话。
if disk.DriveLetter <> "Y" then f.Add f0,disk.DriveLetter          变成
if disk.DriveLetter <> "Y" and disk.DriveLetter <> "X" and disk.DriveLetter <> "Z" then f.Add f0,disk.DriveLetter

这个就需要根据pe自身的特点,自行修改了,一定要把虚拟的硬盘用if分离出来,不然有可能进入死循环。好在虚拟成硬盘的也就这么几个
比如:wimnt用 w: y: 有得img模式用 x:

[ 本帖最后由 dos时代菜鸟 于 2008-11-4 16:39 编辑 ]
回复

使用道具 举报

14#
发表于 2008-11-4 17:44:36 | 只看该作者
如果用移动硬盘,引导winpe,那“移动硬盘会被认成 固定硬盘,排列到 本地硬盘序列后面的”,就应该不成立了吧
回复

使用道具 举报

15#
 楼主| 发表于 2008-11-4 21:04:24 | 只看该作者
原帖由 云飞日月 于 2008-11-4 17:44 发表
如果用移动硬盘,引导winpe,那“移动硬盘会被认成 固定硬盘,排列到 本地硬盘序列后面的”,就应该不成立了吧


为什么不成立?你测试过?
反正我测试的结果是,依然成立!
回复

使用道具 举报

16#
发表于 2008-11-4 21:49:15 | 只看该作者
如果移动硬盘的顺序是0的话,肯定不成立,这个东西,我做的早期批处理,别人已经验证过了,你的VBS中没有处理USB硬盘的语句。
回复

使用道具 举报

17#
发表于 2008-11-4 21:51:44 | 只看该作者
量产成usb-cdrom后,用楼主的批处理运行,U盘盘符变为C,我手动把U盘变为其他盘符,但是,之后,我本地硬盘的C盘盘符,不能加载了。
回复

使用道具 举报

18#
 楼主| 发表于 2008-11-4 22:14:11 | 只看该作者
原帖由 云飞日月 于 2008-11-4 21:51 发表
量产成usb-cdrom后,用楼主的批处理运行,U盘盘符变为C,我手动把U盘变为其他盘符,但是,之后,我本地硬盘的C盘盘符,不能加载了。


1、?? 给各PP,这个不太可能。有可能是你的PE不能显示本地磁盘。
2、我的这个不叫“批处理”,是VBS脚本程序。
3、这个脚本处理U盘的时候是把U盘变成UTSRQPO 。。。的顺序进行的,怎么可能变成C?
回复

使用道具 举报

19#
 楼主| 发表于 2008-11-4 22:15:52 | 只看该作者
更新了,看一楼,增加了一些判断,考虑ABWXYZ各盘,同时修正了一个错误。
回复

使用道具 举报

20#
 楼主| 发表于 2008-11-4 22:21:13 | 只看该作者
原帖由 victor888 于 2008-11-4 21:49 发表
如果移动硬盘的顺序是0的话,肯定不成立,这个东西,我做的早期批处理,别人已经验证过了,你的VBS中没有处理USB硬盘的语句。


什么意思?不明白。
我用3个移动硬盘测试。都是一个结果。这个可以交给PECMD判断。
当没有硬盘的时候,移动硬盘被认为是第一块硬盘,排序为CDEF...
当有一块本地硬盘的情况下,移动硬盘被认为第二块硬盘,排序在第一块硬盘后面。比如:第一块硬盘分配了CDEF移动硬盘就是GHIJ...
当有两块本地硬盘的情况下,移动硬盘被认为第三块硬盘,排序在第二块硬盘后面。比如:第一块硬盘分配了CD第二块硬盘分配了EFG移动硬盘就是HIJ...
回复

使用道具 举报

21#
发表于 2008-11-4 23:39:11 | 只看该作者
这个PECMD这么神奇?可以重新排列磁盘顺序?等我叫别人来验证你的程序。

另外,你的程序是针对RAMDISK方式的PE运行的,如果是非RAMDISK启动的PE,好像不行吧;另外,在XP下运行也可以吗?我看PECMD的命令,SUBJ命令相当于XP下的SUBST,因此我猜在XP下运行不了。
回复

使用道具 举报

22#
 楼主| 发表于 2008-11-5 06:59:31 | 只看该作者
原帖由 victor888 于 2008-11-4 23:39 发表
这个PECMD这么神奇?可以重新排列磁盘顺序?等我叫别人来验证你的程序。

另外,你的程序是针对RAMDISK方式的PE运行的,如果是非RAMDISK启动的PE,好像不行吧;另外,在XP下运行也可以吗?我看PECMD的命令,S ...


对于非ramdisk启动,为什么没有尝试就怀疑呢?你尝试一下不就知道了?
不说了么,这个脚本需要运行在ABwxyz各盘,或者光盘。因为x盘是pe系统盘,里面有vbs脚本支持功能,不能被卸,而pe也不允许x被卸掉。
在xp里面,如果脚本以及vbs运行库所在的分区被卸掉,脚本就不能继续运行了。所以如果xp系统在c:,就应该把脚本里面的 y: 变成 c:。再者说了,在xp里面用得着这脚本么?用mmc管理磁盘,修改一次顺序存盘,以后就不用改了。

电脑是应用数学和实验物理学思想的产物,研究问题需要实践检验。千万不要说 我猜、可能、大概这样的话,说出来没有说服力。
最起码你老人家也应该看看 PECMD 的说明,如果再怀疑还可以看看c语言源代码。也可以看看 大元帅关于“调整u盘盘符”的帖子。

[ 本帖最后由 dos时代菜鸟 于 2008-11-5 07:32 编辑 ]
回复

使用道具 举报

23#
发表于 2008-11-5 07:42:43 | 只看该作者
东西不错呀   支持一下
回复

使用道具 举报

24#
发表于 2008-11-5 07:59:48 | 只看该作者
不错,谢谢楼主分享!!
回复

使用道具 举报

25#
发表于 2008-11-5 08:12:19 | 只看该作者
谁说XP下用不着脚本?手动难道比自动好?
用USB盘安装XP,D盘往往都是USB的盘符,这种错乱必需要纠正的,如果你的分区多,你手动纠正过来吗?
另外,设定U盘盘符为U,不连续。
回复

使用道具 举报

26#
发表于 2008-11-5 08:41:39 | 只看该作者
我承认,我用了不确定的字眼。
PECMD的说明我也看过,SUBJ也知道,LX1638的固定U盘盘符的帖子也看过。
你的VBS基本是可以说是主要用于PE下更改盘符顺序,代码比较精,目标就是为了让在PE下安装XP用。盘符不连续是问题,但你就是为了安装XP方便,因此我认为改一个硬盘的第一分区就够了。对于虚拟盘,就没有考虑,光盘也不考虑,因为主要是用于PE。
老九的SUBJ说的也非常清楚,这东西相当于DOS下的SUBST,因此(这是合理推测),如果运行于XP下,所虚拟出的盘符是没有MOUNTPOINT的,重启系统必将是所有盘符丢失,等于没改,因此(还是判断)可以说不能运行于XP系统。如果你老怀疑我的判断,那么请你在XP下运行你的程序,拿事实来说话。
回复

使用道具 举报

27#
发表于 2008-11-5 08:43:03 | 只看该作者
当然,如果我说的全错了,我对您是相当的佩服了,您的脚本是目前我见过的最精最好的脚本了。
回复

使用道具 举报

28#
 楼主| 发表于 2008-11-5 09:14:20 | 只看该作者
如果在xp下运行这个脚本,需要进行进一步的修改。
不过,这个脚本在pe下达到预期的功能,就足够了。这个脚本就是为了在pe下运行的。就是为了解决“用USB盘安装XP,D盘往往都是USB的盘符,这种错乱必需要纠正的,如果你的分区多,你手动纠正过来吗?”问题的。

为什么要在xp下用这样功能的脚本呢?xp是硬盘系统,修改一次,就存盘了。所以,修改的时候即便手动通过mmc修改,也就那么一次而已。

有的时候正需要把u盘固定分配到u,至于连续不连续,我个人认为无所谓。


郑重声明:没有一定vbs脚本修改能力,不要将这个脚本运行在xp系统!这个脚本是为pe制定的。

[ 本帖最后由 dos时代菜鸟 于 2008-11-5 09:19 编辑 ]
回复

使用道具 举报

29#
发表于 2008-11-5 09:22:32 | 只看该作者
我在XP下测试了,让我后悔。
我把这个脚本和PECMD放到了C盘,我的系统只有一个硬盘,一个CDROM和一个虚拟的CDROM。我把D盘更名为其它盘符,如N盘。
运行了这个脚本,C盘没有了,最后一个分区的盘符变成了M。硬盘只剩EFG盘符(我硬盘总计5个盘符)。
按电源开关,关机,重启,C盘来了,其它盘符不变。
==
现在看来,这个PECMD的SUBJ命令,我还是真说不清楚了,老九你站出来说话吧--
1. PECMD分配盘符是不是会按固定硬盘再移动硬盘的顺序?我搜索,没找到结果。
2. SUBJ命令和装载点是什么关系,SUBJ就是DOS下的SUBST吗?

[ 本帖最后由 victor888 于 2008-11-5 09:51 编辑 ]
回复

使用道具 举报

30#
 楼主| 发表于 2008-11-5 09:23:57 | 只看该作者
pecmd的subj指令,虽然说类似subst,但我们这里用的是他的卸载功能
比如:pecmd subj c: 就是把c盘卸载了。

而pecmd 的另一个命令 show ,功能更加强大,它可以直接把一个硬盘分区挂接分配一个磁盘号。比如: pecmd show 0:1,c 就是把第一硬盘的 第一个分区 装载到 c: 。

这个脚本就是用上面两个 pecmd 的指令加上vbs 对硬盘信息的收集能力,实现预期目的的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-3-5 02:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表