Board logo

标题: 怎么生成一个BOOT.INI [打印本页]

作者: shayulei     时间: 2008-8-6 16:55    标题: 怎么生成一个BOOT.INI

我做了一个XP SP3的WIM的映像,部署到计算机上时发现有些笔记本C盘在第二个分区上,第一个分区是还原分区,但我每次重新安装都要手动的修BOOT.INI太累,请问有什么命令可以在PE里根据实际情况生成一个BOOT.INI呢?

或者有什么办法可以测试C盘所在的分区?
作者: knoppix7     时间: 2008-8-6 17:02
记得Window 安装盘里有个命令可以..
进安装盘里的什么什么模式以后打Help试试
作者: shayulei     时间: 2008-8-6 17:19
在恢复控制台里有个bootcfg,但此命令在PE里只能查看,不能生成
作者: 23112656     时间: 2008-8-6 17:26
echo %homedrive%
作者: shayulei     时间: 2008-8-7 08:20
我不是想知道系统盘是什么盘,我是想知道系统盘在第几个分区上
作者: flyinspace     时间: 2008-8-7 08:37
解说下关键吧。剩下的是体力活了。。
@Echo off & setlocal EnableDelayedExpansion
set "num=0"
for %%i in (c: d: e: f: g:) do (
       set /a num+=1
       if "%%i"=="%SystemDrive%" call :Boot_Output
       )
goto :end
:Boot_Output

echo default=multi(0)disk(0)rdisk(0)partition(%num%)\WINNT>>boot.ini

goto :EOF

:end
作者: XZ     时间: 2008-8-7 08:54
wmic path Win32_DiskPartition
wmic path Win32_LogicalDiskToPartition
這兩個是妳要的嗎?
作者: shayulei     时间: 2008-8-7 09:11
谢谢,不过C盘不一定在第一个分区上,有可能在第二个分区上,所以你设变量的方法,我认为行不通
作者: shayulei     时间: 2008-8-7 09:34
在wim pe里没有wmi 吧
作者: shayulei     时间: 2008-8-7 10:26
我用diskpart /s z:\a.txt > b.txt,现在能不能在B.txt里找到带*号的一行,取他的分区号?
附件 1: b.txt (2008-8-7 10:26, 541 bytes,下载次数: 13)

作者: shayulei     时间: 2008-8-7 11:03
请问我想把find "*" < z:\b.txt显示的内容,赋给一个字符变量,然后截取第12位的1个字符怎么做?
作者: shayulei     时间: 2008-8-7 13:46
for /f "Tokens=1-15" %%i in ('diskpart /s z:\a.txt | find "*"') do set F=%%i-%%j
为什么变量“F ”取不到字符串
作者: haiou327     时间: 2008-8-7 19:03

@echo off&setlocal enableDelayedExpansion
diskpart /s a.txt > b.txt
findstr "*" < b.txt >c.txt
for /f "tokens=2,3* delims= " %%i in (c.txt) do (
set a=%%i
echo !a!
)
del c.txt
pause
变量!a!即为想取的带*的所在分区号

[ Last edited by haiou327 on 2008-8-7 at 08:19 PM ]
作者: wgx1688     时间: 2008-8-7 20:14
看过~.....自己去试试了~
作者: haiou327     时间: 2008-8-7 20:18

@echo off&setlocal enableDelayedExpansion
for /f "delims==" %%f in ('diskpart /s z:\a.txt|findstr "*"') do (
set var=%%i
echo !f!
)
pause
[ Last edited by haiou327 on 2008-8-7 at 09:01 PM ]
作者: flyinspace     时间: 2008-8-8 02:11


  Quote:
Originally posted by shayulei at 2008-8-7 09:11 AM:
谢谢,不过C盘不一定在第一个分区上,有可能在第二个分区上,所以你设变量的方法,我认为行不通

呵呵,麻烦你把boot.ini文件理解一下了才来发言..

最少你要明白那几个参数是什么意思。

还有什么是分区.麻烦你也多研究一下。
作者: flyinspace     时间: 2008-8-8 02:22

@Echo off & setlocal EnableDelayedExpansion
set "num=0"
for %%i in (c: d: e: f: g:) do (
       set /a num+=1
       if /i "%%i"=="%SystemDrive%" call :Boot_Output
       )
goto :end
:Boot_Output

echo default=multi(0)disk(0)rdisk(0)partition(%num%)\WINNT>>boot.ini

goto :EOF

:end
测试了一下代码,发现是少了一个不区分大小写的参数/i..

代码页中已经修正..
作者: shayulei     时间: 2008-8-8 11:12
我已经写好了,谢谢大家
for /f "Tokens=1-3" %%i in ('diskpart /s z:\diskpart\Testc.txt ^| find "*" ') do set /a SystemPart=%%k
if %SystemPart% LSS 1 GOTO error
if %systemPart% GTR 10 goto error
作者: shayulei     时间: 2008-8-8 11:13
@echo off
attrib -s -h -r c:\boot.ini
attrib -s -h -r c:\bootxp.ini
for /f "Tokens=1-3" %%i in ('diskpart /s z:\diskpart\Testc.txt ^| find "*" ') do set /a SystemPart=%%k
if %SystemPart% LSS 1 GOTO error
if %systemPart% GTR 10 goto error

::生成boot.ini
echo [boot loader] > c:\boot.ini
echo timeout=30 >> c:\boot.ini
echo default=multi(0)disk(0)rdisk(0)partition(%SystemPart%)\WINDOWS >> c:\boot.ini
echo [operating systems] >> c:\boot.ini
echo multi(0)disk(0)rdisk(0)partition(%systemPart%)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /detecthal >> c:\boot.ini

::生成bootxp.ini
echo [boot loader] > c:\bootxp.ini
echo timeout=30 >> c:\bootxp.ini
echo default=multi(0)disk(0)rdisk(0)partition(%SystemPart%)\WINDOWS >> c:\bootxp.ini
echo [operating systems] >> c:\bootxp.ini
echo multi(0)disk(0)rdisk(0)partition(%systemPart%)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect >> c:\bootxp.ini

goto :EOF
:error
echo 测试系统盘出错,请手处理boot.ini & goto :EOF

:end
作者: flyinspace     时间: 2008-8-8 13:40
boot.ini文件处理完后需要加多

attrib +s +h +r +a boot.ini

另外,你的脚本是怎么判断的?

把你的 diskpart /s 的脚本拿出来看看?

是不是你用的双硬盘呢?


感觉你的脚本有点多此一举。