无忧启动论坛

标题: 怎样写一条批处理用gdisk格式化第一硬盘的最后分区?谢谢! [打印本页]

作者: ckx168    时间: 2009-12-16 13:42
标题: 怎样写一条批处理用gdisk格式化第一硬盘的最后分区?谢谢!
怎样写一条批处理用gdisk格式化第一硬盘的最后分区?谢谢!
作者: dos时代菜鸟    时间: 2009-12-17 18:00
需要 awk 和nset 配合完成
x.bat 内容如下:
=================
@ECHO OFF
GDISK 1>1.TXT
AWK '/PRI/;/EXT/;/LOG/' 1.TXT|AWK 'END {print FNR}' |NSET N=$1
AWK '/PRI/;/EXT/;/LOG/' 1.TXT|AWK 'NR==%N%'|NSET L=$0
SET P=
ECHO %L%|FIND /I "LOG"
IF NOT ERRORLEVEL 1 SET P=/LOG
ECHO %L%|FIND /I "EXT"
IF NOT ERRORLEVEL 1 SET P=/EXT
ECHO %L%|FIND /I "PRI"
IF NOT ERRORLEVEL 1 SET P=/PRI
echo /DEL /P:%N% /y >1.txt
echo /CRE %P% /FOR %1 /Q /y >>1.txt
gdisk 1 /batch:1.txt
set l=
set p=
set n=
if exist 1.txt del 1.txt
===========================

x.bat /ntfs 将把第一硬盘最后一个分区格式化成ntfs

原理:
1、 通过awk 分析出最后一个分区的 代号 和 类型(主分区/扩展分区/逻辑分区)
2、用gdisk 删除最后一个分区并重新创建和格式化

脚本在 gdisk 11.02  msdos710 下测试成功。

[ 本帖最后由 dos时代菜鸟 于 2009-12-17 18:04 编辑 ]

x.rar

33.58 KB, 下载次数: 71, 下载积分: 无忧币 -2


作者: dos时代菜鸟    时间: 2009-12-18 08:25
当然还需要ms的外部命令 find ,也可以通过AWK 的字符功能达到目的。
另外 x.bat 前面几条命令可以简化
也可以把只有1个分区以及最后分区是ext的情况考虑进来,修改如下:

@ECHO OFF
GDISK 1|AWK '/PRI/;/EXT/;/LOG/'>1.TXT
AWK 'END {print FNR}' 1.TXT|NSET N=$1
  IF *%N%*==*1* GOTO ERROR1
  IF *%N%*==*0* GOTO ERROR1
NSET /P20,3 /L%N% P=$0 <1.TXT
  if *%P%*==*EXT* GOTO ERROR2
ECHO.
ECHO GDISK BATCH:
echo /DEL /P:%N% /y >1.txt
echo /CRE /%P% /FOR %1 /Q /y >>1.txt
TYPE 1.TXT
ECHO Press any key to continue .OR. Ctrl+C to cancel .
PAUSE >NUL
gdisk 1 /batch:1.txt
GOTO END
  :ERROR1
   ECHO Only one drive OR no drive !
   GOTO END
  :ERROR2
   ECHO The last drive is EXT !
:END
set p=
set n=
if exist 1.txt del 1.txt

[ 本帖最后由 dos时代菜鸟 于 2009-12-18 19:34 编辑 ]




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