中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助,谁有在2003PE系统下用命令行激活主分区的小工具
作者:
标题: 求助,谁有在2003PE系统下用命令行激活主分区的小工具 上一主题 | 下一主题
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
状态 离线
『第 2 楼』:  

记得用 Dsptw 的 /ACT 可以激活分区。

  Quote:
例子:
      dspt 0 /ACT:2  将第一硬盘的第二分区激活,只有主分区才能被激活。

本论坛传送门:
http://www.cn-dos.net/forum/view ... sptw&sid=jeRGKP

[ Last edited by wewebb on 2010-11-18 at 22:59 ]

2010-11-18 22:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tclshx
中级用户




积分 249
发帖 64
注册 2005-6-3
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by wewebb at 2010-11-18 10:58 PM:
记得用 Dsptw 的 /ACT 可以激活分区。


本论坛传送门:
http://www.cn-dos.net/forum/view ... sptw&sid=jeRGKP

[ Last  ...

谢谢,看了一下,要是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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: