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
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 的脚本拿出来看看? 是不是你用的双硬盘呢? 感觉你的脚本有点多此一举。