中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » 论坛回收站 » 麻烦高手解释一下本帖的批处理
作者:
标题: 麻烦高手解释一下本帖的批处理 上一主题 | 下一主题
tclshx
中级用户




积分 249
发帖 64
注册 2005-6-3
状态 离线
『楼 主』:  麻烦高手解释一下本帖的批处理

麻烦高手解释一下,能每行都解择更好,那几个IF把我弄晕了,这是一个分区的批处理

echo 输入各分区大小(单位:GB),空格或","分开,最后一个分区不输:
set size=
Set /P size=各分区大小:

echo.
echo 输入"NTFS"或"FAT"进行相应格式化,输入"N"或省略则不格式化:
set frmt=
Set /P frmt=:
set frmty=
If /I '%frmt%'=='ntfs' set frmty=/for /q /ntfs&&set ss=1024
If /I '%frmt%'=='fat' set frmty=/for /q&&set ss=1028-8
echo 开始分区,稍等...
echo 分区过程信息:
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, " %%c in ("%size%") do (
set /A cp=%%c*%ss%
GDISK32 1 /cre /pri /sz:!cp! %frmty%
GDISK32 1 /act /p:1
GDISK32 1 /cre /ext
for %%i in (%%d,%%e,%%f,%%g,%%h,%%i,%%j,%%k) do (
set /A op=%%i*%ss%
GDISK32 1 /cre /log /sz:!op! %frmty%
))
GDISK32 1 /cre /log /end %frmty%
echo.
echo 分区完成!

2010-11-20 12:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wewebb
初级用户





积分 66
发帖 53
注册 2009-10-9
状态 离线
『第 2 楼』:  

echo 输入各分区大小(单位:GB),空格或","分开,最后一个分区不输:
set size=


Set /P size=各分区大小:

echo.

::从这里开始注释;
echo 输入"NTFS"或"FAT"进行相应格式化,输入"N"或省略则不格式化:

::删除 frmt 变量
set frmt=

::用户输入 frmt 变量值( NTFS or FAT )
Set /P frmt=:

::删除 frmt 变量
set frmty=

:: 下面的 if 语句是设定 frmty 和 ss 变量值.
:: 其中 frmty 变量保存 Gdisk32 的参数
:: /for 为格式化分区;  /q  就是快速格式化  /ntfs 指定分区格式

:: 两种分区格式的算法不同。ss 变量是保存基数。 在下面会用到


If /I '%frmt%'=='ntfs' set frmty=/for /q /ntfs&&set ss=1024
If /I '%frmt%'=='fat' set frmty=/for /q&&set ss=1028-8


echo 开始分区,稍等...
echo 分区过程信息:

::将用户输入的每个分区大小值取出,最多可设定9个分区

for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, " %%c in ("%size%") do (

rem 下面将用户输入的分区大小数( GB单位 ) 转化为 MB 单位。就是  数值* SS变量值
rem 例如 NTFS 分区则是: GB数值*1024

set /A cp=%%c*%ss%

rem 下面两行划分第一个主分区并激活
GDISK32 1 /cre /pri /sz:!cp! %frmty%
GDISK32 1 /act /p:1

rem 下面一行将剩余空间划分为扩展分区
GDISK32 1 /cre /ext

rem 下面的 For 循环是划分逻辑分区。 最多八个
for %%i in (%%d,%%e,%%f,%%g,%%h,%%i,%%j,%%k) do (
set /A op=%%i*%ss%
GDISK32 1 /cre /log /sz:!op! %frmty%
))

::将剩余空间划分为一个逻辑分区
GDISK32 1 /cre /log /end %frmty%
echo.
echo 分区完成!

[ Last edited by wewebb on 2010-11-20 at 14:28 ]

2010-11-20 14:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: