|
现在的WINPE都追求全,功能多,但是都忽视了体积。很大用户仅仅是使用PE搞下维护,并且很少用到PE。体积太大的话看着害怕。
好在我们有oscdimg.exe这个工具。
下边我提供下思路:
比如,我制作了一个220M的PE,想从它的里边提取骨头版,45M维护型,90M网络版,所以我就写了个程序,程序看着多,但是主程序就仅仅一句(红色部分),希望各位制作PE提供坛友使用的老大们能将它移植过去,帮助用户快速DIY。。附上代码和所用文件。
MAKEISO.rar
(60.14 KB, 下载次数: 5195)
@Echo Off
PUSHD %~dp0
COLOR 0B
Set Prog=小马WinPE专用单ISO提取程序
Set L1= ╭══════════════════╮
Set L2= ║ ║
Set L3= ╭══┤ 小马WinPE专用单ISO提取程序 ├══╮
Set L4= ║ ║ ║ ║
Set L5= ║ ╰══════════════════╯ ║
Set L6= ║ ║
Set L7= ╟════════════════════════╢
Set L8= ║ 版权所有:深度mapeimapei 盗版不究 ║
Set L9= ╰────────────────────────╯
Title %Prog%
::CheckOS
if /i not "%os%."=="Windows_NT." goto SystemErro
::判断系统版本并设置TheOS
ver|find /i " 6.1">nul &&set Winver=WIN7&& set TheOS=WIN7
ver|find /i " 6.0">nul &&set Winver=vista&& set TheOS=Vista
ver|find /i " 5.0">nul &&set Winver=winnt&& set TheOS=2000
ver|find /i " 5.1">nul &&set Winver=winnt&& set TheOS=XP
ver|find /i " 5.2">nul &&set Winver=winnt&& set TheOS=2003
goto Start
:SystemErro
cls
Echo.
Echo.
Echo 注意:未经测试,本软件可能不适用于非 Windows PE/2000/XP/2003/Vista/WIN7 操作系统。
Echo 按回车键退出安装程序
Pause >nul
Exit
:Start
CLS
Title %Prog%——提取
Echo.
Echo %L1%
Echo %L2%
Echo %L3%
Echo %L4%
Echo %L5%
Echo %L6%
Echo ║ 请选择提取模式: ║
Echo %L6%
Echo ║ [1] 提取骨头版WINPE (仅含有内核) ║
Echo ║ ║
Echo ║ [2] 提取45M迷你U盘版 (外置仅含有basic包) ║
Echo ║ ║
Echo ║ [3] 提取90M带网络维护版 (含有网路和安装程序) ║
Echo ║ ║
Echo ║ [Q] 退出提取模式 ║
Echo %L6%
Echo %L7%
Echo %L7%
Echo %L8%
Echo %L9%
Echo.
Echo 您现在使用的是 Windows %TheOS% 操作系统 !
if "%TheOS%"=="XP" Echo ( 或 Windows XP 核心的 WinPE )
if "%TheOS%"=="2003" Echo ( 或 Windows 2003 核心的 WinPE )
if "%TheOS%"=="Vista" Echo ( 请确保您拥有管理员权限以及关闭了UAC,否则安装可能失败 )
if "%TheOS%"=="WIN7" Echo ( 请确保您拥有管理员权限以及关闭了UAC,否则安装可能失败 )
Echo.
::Set Choice=
Set /P Choice= 请选择要进行的操作 (1/2/3/Q) ,然后按回车:
If "%Choice%"=="" Goto Start
If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
If /I "%Choice%"=="1" set mkiso=gutou.iso&&Goto gutou
If /I "%Choice%"=="2" set mkiso=45mu.iso&&Goto 45mu
If /I "%Choice%"=="3" set mkiso=90Mnet.iso&&Goto 90Mnet
If /I "%Choice%"=="Q" Exit
Goto Start
:gutou
Title 单独生成%mkiso%文件...
CLS
Echo.
Echo.
Set /P Save=请设定%mkiso%文件 存放的分区符[不需要冒号,例如 D(推荐)]:
Echo.&&Echo.
If Not "%Save%"=="" Set Save=%Save:~0,1%:
md %Save%\gutou
set isotem="%Save%\gutou"
Echo.
Echo.
Echo 正在整理必要文件,请稍后...
Copy WINPE.IM_ %isotem%\ /y>NUL 2>NUL
Copy WINNT.XPE %isotem%\ /y>NUL 2>NUL
Copy BOOTFONT.BIN %isotem%\ /y>NUL 2>NUL
XCOPY WXPE /E %isotem%\WXPE\ /Y /H /R>NUL 2>NUL
Cls
Echo.
Echo.
Echo 正在生成%mkiso%文件到%Save% 目录...
If Exist EZBOOT\Oscdimg.Exe If Exist EZBOOT\PE.BIF (
EZBOOT\Oscdimg.Exe -L"gutou" -T06/01/2009,00:00:00 -H -N -B"EZBOOT\PE.BIF" -O "%isotem%" "%Save%\gutou.iso">Nul
)
Goto SUCCESS
:45mu
Title 单独生成%mkiso%文件...
CLS
Echo.
Echo.
Set /P Save=请设定%mkiso%文件存放的分区符[不需要冒号,例如 D(推荐)]:
Echo.&&Echo.
If Not "%Save%"=="" Set Save=%Save:~0,1%:
md %Save%\45MU
set isotem="%Save%\45MU"
md %isotem%\MINIPE
Echo.
Echo.
Echo 正在整理必要文件,请稍后...
Copy WINPE.IM_ %isotem%\ /y>NUL 2>NUL
Copy WINNT.XPE %isotem%\ /y>NUL 2>NUL
Copy BOOTFONT.BIN %isotem%\ /y>NUL 2>NUL
Copy MINIPE\BASIC.WIM %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\BLISS.JPG %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\WINPE.INI %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\LOADOP.INI %isotem%\MINIPE\ /y>NUL 2>NUL
XCOPY WXPE /E %isotem%\WXPE\ /Y /H /R>NUL 2>NUL
Echo.
Echo.
Echo 正在生成%mkiso%文件到%Save% 目录...
If Exist EZBOOT\Oscdimg.Exe If Exist EZBOOT\PE.BIF (
EZBOOT\Oscdimg.Exe -L"45MU" -T06/01/2009,00:00:00 -H -N -B"EZBOOT\PE.BIF" -O "%isotem%" "%Save%\45MU.iso">Nul
)
Goto SUCCESS
:90Mnet
Title 单独生成%mkiso%文件...
CLS
Echo.
Echo.
Set /P Save=请设定%mkiso%文件 存放的分区符[不需要冒号,例如 D(推荐)]:
Echo.&&Echo.
If Not "%Save%"=="" Set Save=%Save:~0,1%:
Md %Save%\90Mnet
set isotem="%Save%\90Mnet"
md %isotem%\MINIPE
Echo.
Echo.
Echo 正在整理必要文件,请稍后...
Copy WINPE.IM_ %isotem%\ /y>NUL 2>NUL
Copy WINNT.XPE %isotem%\ /y>NUL 2>NUL
Copy BOOTFONT.BIN %isotem%\ /y>NUL 2>NUL
Copy MINIPE\BASIC.WIM %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\GHOST.WIM %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\MMC.WIM %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\DISKGENIUS.WIM %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\OPERA.WIM %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\SYSTEM.WIM %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\WINPE.INI %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\LOADOP.INI %isotem%\MINIPE\ /y>NUL 2>NUL
Copy MINIPE\BLISS.JPG %isotem%\MINIPE\ /y>NUL 2>NUL
XCOPY WXPE /E %isotem%\WXPE\ /Y /H /R>NUL 2>NUL
XCOPY SETUP /E %isotem%\SETUP\ /Y /H /R>NUL 2>NUL
XCOPY EZBOOT /E %isotem%\EZBOOT\ /Y /H /R>NUL 2>NUL
Echo.
Echo.
Echo 正在生成%mkiso%文件到%Save% 目录...
If Exist EZBOOT\Oscdimg.Exe If Exist EZBOOT\PE.BIF (
EZBOOT\Oscdimg.Exe -L"90Mnet" -T06/01/2009,00:00:00 -H -N -B"EZBOOT\easy.bif" -O "%isotem%" "%Save%\90Mnet.iso">Nul
)
Goto SUCCESS
:SUCCESS
Title %Prog%——安装完成
CLS
Echo.
rd /s /q %isotem%
Cls
Echo.
Echo. %mkiso% 文件已成功生成至 %Save% 目录内...
Echo.
set /p Cho=返回主菜单继续制作请输入Y,否则按Enter(回车)退出。
if /i "%Cho%"=="Y" CALL :Start
Goto :EOF
exit
附上oscdimg的命令参数:
oscdimg [-blocation] [-d] [-h] [-j1] [-j2] [-llabelname] [-n] [-nt] [-o[i][s]] [-tmm/dd/yyyy,hh:mm:ss [-g]] [-x] sourceroot [image_file]
选项 描述 -b location
指定 El Torito 引导扇区文件的位置。不要使用任何空格。
例如,
-bc:\directory\Etfsboot.com
-d
不强制将小写字母文件名转换为大写字母。
-g
对所有文件使用通用协调时间 (UCT) 而不是当地时间。
-h
包括隐藏文件和目录。
-j1
对 Joliet Unicode 文件名进行编码,并在 ISO-9660 名称空间中生成符合 DOS 8.3 标准的文件名。这些文件名可以被 Joliet 系统或传统的 ISO-9660 系统读取,但是 Oscdimg 可能会更改 ISO-9660 命名空间中的一些文件名以符合 DOS 8.3 和/或 ISO-9660 命名限制。
当使用 -j1 或 -j2 选项时,-d、-n 和 -nt 选项不会应用且无法使用。
-j2
对不含标准 ISO-9660 名称的 Joliet Unicode 文件名进行编码。(要求 Joliet 操作系统从 CD-ROM 读取文件。)
当使用 -j1 或 -j2 选项时,-d、-n 和 -nt 选项不会应用且无法使用。
-l labelname
指定卷标。不要在 l 和 labelname 之间使用空格。
例如,
-lMYLABEL
-n
允许使用长文件名。
-nt
允许与 Windows NT 3.51 兼容的长文件名。
-o
通过对重复的文件仅进行一次编码来优化存储。
-oi
通过对重复的文件仅进行一次编码来优化存储。比较文件时,忽略菱形压缩时间戳。
-os
通过对重复的文件仅进行一次编码来优化存储。在创建映像时显示重复的文件。
-ois
通过对重复的文件仅进行一次编码来优化存储。比较文件时,忽略菱形压缩时间戳。在创建映像时显示重复的文件。
-t mm/dd/yyyy,hh:mm:ss
为所有文件和目录指定时间戳。不要使用任何空格。使用美国日期格式和 24 小时制。可以在项目间使用任何分隔符。
例如,
-t12/31/2000,15:01:00
-x
计算并编码映像中的 AutoCRC 值。
sourceroot
必需。指定您要创建到 .iso 映像中的 Windows PE 文件的位置。
image_file
指定要从 Windows PE 文件创建的 .iso 映像文件的名称。
丝路商旅 http://www.you369.com
[ 本帖最后由 mapeimapei 于 2009-10-17 13:49 编辑 ] |
|