无忧启动论坛

标题: 成功解决启动PE后,不借助第三方软件,自动修改光驱、U盘盘符 [打印本页]

作者: 红色    时间: 2010-8-23 12:03
标题: 成功解决启动PE后,不借助第三方软件,自动修改光驱、U盘盘符
先说一下条件:
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 编辑 ]
作者: loosifer    时间: 2010-8-23 13:29
楼主能不能帮忙把DOS的启动U盘的启动后的盘符C改成A啊,这个困扰我好久一直没能解决
作者: 玄天    时间: 2010-8-23 13:32
没必要,PE3盘符很正常(就是我的PE1盘符也很正常),没必要更改
作者: lisong    时间: 2010-8-23 14:14
大家学习提高!!!!!!!!




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