无忧启动论坛

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

成功解决启动PE后,不借助第三方软件,自动修改光驱、U盘盘符

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-23 12:03:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先说一下条件:
1、光驱和U盘的数量不能同时超过2个。至于在主板上插满光驱和U盘的强人—_—!请自行修改
2、本办法可以把根目录下含有BOOTMGR启动文件的光驱设为Z,U盘设为W,启动文件不同请自行修改
3、启动PE后请把本批处理文件copy到X盘符下
4、本办法在PE3.0下测试通过,请各位帮忙测试,Vista的没试,应该可以,WinXP的PE不行。
5、本办法U盘部分只支持简体中文版的PE,其他语种请修改“移动”二字。
6、高手帮忙看下,可否优化。


将下列代码保存为批处理文件:
@echo off
@echo list volume > disktemp.txt
diskpart /s disktemp.txt|findstr /i d-rom|findstr /i /n d-rom > cdtemp.txt
diskpart /s disktemp.txt|findstr /i 移动|findstr /i /n 移动 > usbtemp.txt
for /f "tokens=3" %%a in ('find /c /i "d-rom" cdtemp.txt') do set cdnum=%%a
for /f "tokens=3" %%a in ('find /c /i "移动" usbtemp.txt') do set usbnum=%%a
echo 这台电脑上配置有:%cdnum%个光驱,%usbnum%个闪存。
if %cdnum% equ 0 if %usbnum% equ 0 goto:L
if %cdnum% equ 0 if %usbnum% gtr 2 goto:M
if %cdnum% gtr 2 if %usbnum% equ 0 goto:M
if %cdnum% gtr 2 if %usbnum% gtr 2 goto:M
if %cdnum% equ 1 if %usbnum% equ 0 call:J
if %cdnum% equ 1 if %usbnum% equ 0 call:A
if %cdnum% equ 2 if %usbnum% equ 0 call:J
if %cdnum% equ 2 if %usbnum% equ 0 call:A
if %cdnum% equ 1 if %usbnum% gtr 2 call:J
if %cdnum% equ 1 if %usbnum% gtr 2 call:A
if %cdnum% equ 2 if %usbnum% gtr 2 call:J
if %cdnum% equ 2 if %usbnum% gtr 2 call:A
if %cdnum% equ 0 if %usbnum% equ 1 call:K
if %cdnum% equ 0 if %usbnum% equ 1 call:B
if %cdnum% equ 0 if %usbnum% equ 2 call:K
if %cdnum% equ 0 if %usbnum% equ 2 call:B
if %cdnum% gtr 2 if %usbnum% equ 1 call:K
if %cdnum% gtr 2 if %usbnum% equ 1 call:B
if %cdnum% gtr 2 if %usbnum% equ 2 call:K
if %cdnum% gtr 2 if %usbnum% equ 2 call:B
if %cdnum% equ 1 if %usbnum% equ 1 call:I
if %cdnum% equ 1 if %usbnum% equ 1 call:A
if %cdnum% equ 1 if %usbnum% equ 1 call:B
if %cdnum% equ 1 if %usbnum% equ 2 call:I
if %cdnum% equ 1 if %usbnum% equ 2 call:A
if %cdnum% equ 1 if %usbnum% equ 2 call:B
if %cdnum% equ 2 if %usbnum% equ 1 call:I
if %cdnum% equ 2 if %usbnum% equ 1 call:A
if %cdnum% equ 2 if %usbnum% equ 1 call:B
if %cdnum% equ 2 if %usbnum% equ 2 call:I
if %cdnum% equ 2 if %usbnum% equ 2 call:A
if %cdnum% equ 2 if %usbnum% equ 2 call:B
@echo 当前驱动器号分配如下:
diskpart /s disktemp.txt
@echo 当前驱动器号分配如下:
@echo list volume > disktemp.txt
diskpart /s disktemp.txt
goto:eof
:A
for /f "tokens=1,3 delims=:, " %%a in (cdtemp.txt) do set cdvol%%a=%%b
for /f "tokens=1,4 delims=:, " %%a in (cdtemp.txt) do set cdltr%%a=%%b
if %cdnum% equ 1 (call:G) else (if exist %cdltr1%:\bootmgr (call:C) else call:D)
goto:eof
:B
for /f "tokens=1,3 delims=:, " %%a in (usbtemp.txt) do set usbvol%%a=%%b
for /f "tokens=1,4 delims=:, " %%a in (usbtemp.txt) do set usbltr%%a=%%b
if %usbnum% equ 1 (call:H) else (if exist %usbltr1%:\bootmgr (call:E) else call:F)
goto:eof
:C
@echo select volume %cdvol1% >> disktemp.txt
@echo remove letter=%cdltr1% >> disktemp.txt
@echo assign letter=z >> disktemp.txt
@echo select volume %cdvol2% >> disktemp.txt
@echo remove letter=%cdltr2% >> disktemp.txt
@echo assign letter=y >> disktemp.txt
goto:eof
:D
@echo select volume %cdvol1% >> disktemp.txt
@echo remove letter=%cdltr1% >> disktemp.txt
@echo assign letter=y >> disktemp.txt
@echo select volume %cdvol2% >> disktemp.txt
@echo remove letter=%cdltr2% >> disktemp.txt
@echo assign letter=z >> disktemp.txt
goto:eof
:E
@echo select volume %usbvol1% >> disktemp.txt
@echo remove letter=%usbltr1% >> disktemp.txt
@echo assign letter=w >> disktemp.txt
@echo select volume %usbvol2% >> disktemp.txt
@echo remove lettet=%usbltr2% >> disktemp.txt
@echo assign letter=v >> disktemp.txt
goto:eof
:F
@echo select volume %usbvol1% >> disktemp.txt
@echo remove letter=%usbltr1% >> disktemp.txt
@echo assign letter=v >> disktemp.txt
@echo select volume %usbvol2% >> disktemp.txt
@echo remove letter=%usbltr2% >> disktemp.txt
@echo assign letter=w >> disktemp.txt
goto:eof
:G
@echo select volume %cdvol1% >> disktemp.txt
@echo remove letter=%cdltr1% >> disktemp.txt
@echo assign letter=z >> disktemp.txt
goto:eof
:H
@echo select volume %usbvol1% >> disktemp.txt
@echo remove letter=%usbltr1% >> disktemp.txt
@echo assign letter=w >> disktemp.txt
goto:eof
:I
@echo 正在给光盘驱动器和闪存盘重新分配驱动器号,请稍候...
goto:eof
:J
@echo 正在给光盘驱动器重新分配驱动器号,请稍候...
goto:eof
:K
@echo 正在给闪存盘重新分配驱动器号,请稍候...
goto:eof
:L
@echo 不需要重新设置&pause&&goto:eof

:M
@echo 超过超过数量上限 2 请修改本批处理文件后再运行&pause&&goto:eof

[ 本帖最后由 红色 于 2010-8-23 12:15 编辑 ]
2#
发表于 2010-8-23 13:29:09 | 只看该作者
楼主能不能帮忙把DOS的启动U盘的启动后的盘符C改成A啊,这个困扰我好久一直没能解决
回复

使用道具 举报

3#
发表于 2010-8-23 13:32:44 | 只看该作者
没必要,PE3盘符很正常(就是我的PE1盘符也很正常),没必要更改
回复

使用道具 举报

4#
发表于 2010-8-23 14:14:48 | 只看该作者
大家学习提高!!!!!!!!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-1-11 00:04

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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