|
tclshx
中级用户
积分 249
发帖 64
注册 2005-6-3
状态 离线
|
『楼 主』:
求助,谁有在2003PE系统下用命令行激活主分区的小工具
谁有在2003PE系统下用命令行激活主分区的小工具,希望能贡献一下,并给出参数,我是用来配合BOOTSECT.EXE使用,以下是我的批处理
要求对硬盘分区写入MBR后同时激活它,目的是向无系统分区安装PE时,写入MBR并激活
下面的代码是写入MBR的
有个小工具加进进来就可以了
@ECHO off
color 4f
REM 改变当前路径到批处理所在路径
cd /d "%~dp0"
Echo.
Set RP=
Set /P RP=请输入您需要写入 mbr 的分区符(确认要写入的盘后再动手,不需要冒号,例如 C),然后按回车:
Echo.&&Echo.
:0001
CLS
ECHO.
ECHO 请选择写入mbr的方式
ECHO. ┏━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO ┃ ┃
ECHO ┃ 1 写入nt52引导, 2k/xp/2k3系统专用 ┃
ECHO ┃ ┃
ECHO ┃ 2 写入nt60引导, vista/win2008/win7系统专用 ┃
ECHO ┃ ┃
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━┛
set /p az= 请输入对应的数字后[Enter]继续:
if "%az%"=="1" goto 00052
if "%az%"=="2" goto 00060
ECHO 输入错误,请重输入....
PAUSE>NUL 2>NUL
GOTO 0001
:00052
%SystemRoot%\system32\bootsect /nt52 %RP%: /mbr
ECHO.
ECHO nt52_mbr成功写入%RP%盘
PAUSE>NUL 2>NUL
EXIT
:00060
%SystemRoot%\system32\bootsect /nt60 %RP%: /mbr
ECHO.
ECHO nt60_mbr成功写入%RP%盘
PAUSE>NUL 2>NUL
EXIT
|
|
2010-11-18 21:26 |
|
|
wewebb
初级用户
积分 66
发帖 53
注册 2009-10-9
状态 离线
|
|
2010-11-18 22:58 |
|
|
tclshx
中级用户
积分 249
发帖 64
注册 2005-6-3
状态 离线
|
『第
3 楼』:
谢谢,看了一下,要是DOS下才能用,我是要在PE系统下用的
|
|
2010-11-19 09:31 |
|
|
wewebb
初级用户
积分 66
发帖 53
注册 2009-10-9
状态 离线
|
『第
4 楼』:
在 WinXP 中,我刚才试了一下。
用上述地址中第二个附件的 DSPTW 可以激活第二个主分区的。我想在 WinPE 中也是可以的。
|
|
2010-11-19 12:21 |
|
|
tclshx
中级用户
积分 249
发帖 64
注册 2005-6-3
状态 离线
|
『第
5 楼』:
Quote: | Originally posted by wewebb at 2010-11-19 12:21 PM:
在 WinXP 中,我刚才试了一下。
用上述地址中第二个附件的 DSPTW 可以激活第二个主分区的。我想在 WinPE 中也是可以的。
[img]http://img208.poco.cn/mypoco/ ... |
|
谢谢热心朋友,我已用GDISK32解决,帖出批处理如下,不知还能进一步优化不用到的fbinst是一个小工具,总共用到三个命令行小软件,通过测试,有BUG,对于C分区的激活没问题,其它分区的激活就不行
@ECHO off
color 4f
REM 改变当前路径到批处理所在路径
cd /d "%~dp0"
Echo.
Set RP=
Set /P RP=请输入要写入mbr的分区符(请确认要写入mbr的分区是主分区,不需要冒号,例如C),然后按回车:
Echo.&&Echo.
:0001
CLS
ECHO.
ECHO 请选择写入mbr的方式
ECHO. ┏━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO ┃ ┃
ECHO ┃ 1 写入nt52引导, 2k/xp/2k3系统专用 ┃
ECHO ┃ ┃
ECHO ┃ 2 写入nt60引导, vista/win2008/win7系统专用 ┃
ECHO ┃ ┃
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━┛
set /p az= 请输入对应的数字后[Enter]继续:
if "%az%"=="1" goto 00052
if "%az%"=="2" goto 00060
ECHO 输入错误,按任意键重新输入....
PAUSE>NUL 2>NUL
GOTO 0001
:00052
bootsect /nt52 %RP%: /mbr
ECHO.
ECHO nt52_mbr成功写入%RP%:盘,按任意键继续...
ECHO.
PAUSE>NUL 2>NUL
:0003
CLS
ECHO.
ECHO 正在检测磁盘信息. . .
fbinst --list
set /p nn=请输入要激活分区的磁盘符号回车继续:hd
set hd=(hd%nn%)
if "%nn%"=="" goto 0003
ECHO 您选择的磁盘符号为:%hd%
ECHO 请确认选择无误后,按任意键继续
PAUSE>NUL 2>NUL
:0005
CLS
ECHO 是否激活%hd%的%RP%:分区?
ECHO ┏━━━━━━━━━━━┓
ECHO ┃ ┃
ECHO ┃ 1 激活%RP%:分区 ┃
ECHO ┃ ┃
ECHO ┃ 2 不激活%RP%:分区 ┃
ECHO ┃ ┃
ECHO ┗━━━━━━━━━━━┛
set /p a5= 请输入对应的数字后[Enter]继续:
if "%a5%"=="1" goto 0004
if "%a5%"=="2" EXIT
ECHO 输入错误,按任意键重新输入....
PAUSE>NUL 2>NUL
GOTO 0005
:0004
if "%RP%"=="C" SET RR=1&&GOTO 0006
if "%RP%"=="D" SET RR=2&&GOTO 0006
if "%RP%"=="E" SET RR=3&&GOTO 0006
if "%RP%"=="F" SET RR=4&&GOTO 0006
if "%RP%"=="G" SET RR=5&&GOTO 0006
if "%RP%"=="H" SET RR=6&&GOTO 0006
if "%RP%"=="I" SET RR=7&&GOTO 0006
if "%RP%"=="J" SET RR=8&&GOTO 0006
if "%RP%"=="K" SET RR=9&&GOTO 0006
if "%RP%"=="L" SET RR=10&&GOTO 0006
if "%RP%"=="M" SET RR=11&&GOTO 0006
if "%RP%"=="N" SET RR=12&&GOTO 0006
if "%RP%"=="O" SET RR=13&&GOTO 0006
if "%RP%"=="P" SET RR=14&&GOTO 0006
if "%RP%"=="Q" SET RR=15&&GOTO 0006
if "%RP%"=="R" SET RR=16&&GOTO 0006
if "%RP%"=="S" SET RR=17&&GOTO 0006
if "%RP%"=="T" SET RR=18&&GOTO 0006
if "%RP%"=="U" SET RR=19&&GOTO 0006
if "%RP%"=="V" SET RR=20&&GOTO 0006
if "%RP%"=="W" SET RR=21&&GOTO 0006
if "%RP%"=="X" SET RR=22&&GOTO 0006
if "%RP%"=="Y" SET RR=23&&GOTO 0006
if "%RP%"=="Z" SET RR=24&&GOTO 0006
if "%RP%"=="A" SET RR=25&&GOTO 0006
if "%RP%"=="B" SET RR=26
:0006
CLS
ECHO 您选择的分区号为:%RP%:
ECHO 请确认选择无误后,按任意键继续,若无反应,请按两次任意键。。。
PAUSE>NUL 2>NUL
set /a mm=%nn%+1
Gdisk32 %mm% /act /p:%RR%
ECHO 您选择的%hd%磁盘%RP%:分区已激活
PAUSE>NUL 2>NUL
EXIT
:00060
bootsect /nt60 %RP%: /mbr
ECHO.
ECHO nt60_mbr成功写入%RP%盘,按任意键继续....
PAUSE>NUL 2>NUL
:0003A
CLS
ECHO.
ECHO 正在检测磁盘信息. . .
fbinst --list
set /p nn=请输入要激活分区的磁盘符号回车继续:hd
set hd=(hd%nn%)
if "%nn%"=="" goto 0003A
ECHO 您选择的磁盘符号为:%hd%
ECHO 请确认选择无误后,按任意键继续
PAUSE>NUL 2>NUL
:0005A
CLS
ECHO 是否激活%hd%的%RP%:分区?
ECHO ┏━━━━━━━━━━━┓
ECHO ┃ ┃
ECHO ┃ 1 激活%RP%:分区 ┃
ECHO ┃ ┃
ECHO ┃ 2 不激活%RP%:分区 ┃
ECHO ┃ ┃
ECHO ┗━━━━━━━━━━━┛
set /p b5= 请输入对应的数字后[Enter]继续:
if "%b5%"=="1" goto 0004A
if "%b5%"=="2" EXIT
ECHO 输入错误,按任意键重新输入....
PAUSE>NUL 2>NUL
GOTO 0005A
:0004A
if "%RP%"=="C" SET RR=1&&GOTO 0006A
if "%RP%"=="D" SET RR=2&&GOTO 0006A
if "%RP%"=="E" SET RR=3&&GOTO 0006A
if "%RP%"=="F" SET RR=4&&GOTO 0006A
if "%RP%"=="G" SET RR=5&&GOTO 0006A
if "%RP%"=="H" SET RR=6&&GOTO 0006A
if "%RP%"=="I" SET RR=7&&GOTO 0006A
if "%RP%"=="J" SET RR=8&&GOTO 0006A
if "%RP%"=="K" SET RR=9&&GOTO 0006A
if "%RP%"=="L" SET RR=10&&GOTO 0006A
if "%RP%"=="M" SET RR=11&&GOTO 0006A
if "%RP%"=="N" SET RR=12&&GOTO 0006A
if "%RP%"=="O" SET RR=13&&GOTO 0006A
if "%RP%"=="P" SET RR=14&&GOTO 0006A
if "%RP%"=="Q" SET RR=15&&GOTO 0006A
if "%RP%"=="R" SET RR=16&&GOTO 0006A
if "%RP%"=="S" SET RR=17&&GOTO 0006A
if "%RP%"=="T" SET RR=18&&GOTO 0006A
if "%RP%"=="U" SET RR=19&&GOTO 0006A
if "%RP%"=="V" SET RR=20&&GOTO 0006A
if "%RP%"=="W" SET RR=21&&GOTO 0006A
if "%RP%"=="X" SET RR=22&&GOTO 0006A
if "%RP%"=="Y" SET RR=23&&GOTO 0006A
if "%RP%"=="Z" SET RR=24&&GOTO 0006A
if "%RP%"=="A" SET RR=25&&GOTO 0006A
if "%RP%"=="B" SET RR=26
:0006A
CLS
ECHO 您选择的分区号为:%RP%:
ECHO 请确认选择无误后,按任意键继续,若无反应,请按两次任意键。。。
PAUSE>NUL 2>NUL
set /a mm=%nn%+1
Gdisk32 %mm% /act /p:%RR%
ECHO 您选择的%hd%磁盘%RP%:分区已激活
PAUSE>NUL 2>NUL
EXIT
[ Last edited by tclshx on 2010-11-19 at 13:10 ]
|
|
2010-11-19 12:56 |
|
|
wewebb
初级用户
积分 66
发帖 53
注册 2009-10-9
状态 离线
|
『第
6 楼』:
关于 gdisk32 的 /p 参数意思,其实跟 C 、 D 这些盘符不是固定对应的。
/p:num 这个 num 是该硬盘中第几分区的序数。例如: 将第3块硬盘的第3主分区激活,命令就是:
gdisk32 3 /act /p:3
同一个分区,可能是 E 盘,也可能是 F 盘。
我想在 VirtualBox 中来说明一下:
[ Last edited by wewebb on 2010-11-19 at 19:35 ]
|
|
2010-11-19 19:19 |
|
|
tclshx
中级用户
积分 249
发帖 64
注册 2005-6-3
状态 离线
|
『第
7 楼』:
Quote: | Originally posted by wewebb at 2010-11-19 07:19 PM:
关于 gdisk32 的 /p 参数意思,其实跟 C 、 D 这些盘符不是固定对应的。
/p:num 这个 num 是该硬盘中第几分区的序数。例如: 将第3块硬盘的第3主分区 ... |
|
谢谢回复,差不多解决了
[ Last edited by tclshx on 2010-11-20 at 00:13 ]
|
|
2010-11-19 20:19 |
|
|