|
本帖最后由 hhh333 于 2021-9-2 06:05 编辑
经过查阅资料,UltraISO从9.71版本以后,可以通过按Ctrl+alt+I来插入EFI启动文件,又经过咨询,这个功能不支持命令行添加。可不可以通过界面操作来达成呢?经测试是可行的,现共享给大家。
- @echo off
- rem 本程序使用isodir来定义打包的目录,可以拖放打包目录进行打包
- rem 如果未指定打包目录,则使用本文件所在位置的上两级作打包目录
- rem 打包目录本身及路径均不能带空格,否则可能出现不可预计的结果
- rem 生成的ISO与该文件夹位于同一目录下,文件名为打包目录的目录名
- rem 启动文件位置的定义约定使用相对于打包目录的相对路径。
- set r=-preparer http://bbs.wuyou.net -publisher H3
- For /F "tokens=1" %%i In ('DATE /T') do SET d=%%i
- color 3f
- PUSHD %~dp0
- if not "%1"=="" goto Get_isodir
- SET TP=%cd%
- cd ..\..
- set isodir=%cd%
- cd %TP%
- call :Get_isoname %isodir%
- goto start
- :Get_isodir
- set isodir=%1
- set isoname=%~n1%
- :start
- set biosfile=BOOT\ISOLINUX.BIN
- set efifile=EFI\efisys.bin
- ultraiso.exe -jlong -l -imax -optimize %r% -boot %isodir%\%biosfile% -volu %isoname% -out %isodir%\..\%isoname%.ISO
- cls
- color 4f
- echo 注意:
- Echo.
- echo 下面进行UltraIso的界面按键操作,请保持程序为当前窗口并等待窗口关闭……
- Echo.
- start ultraiso.exe %isodir%\..\%isoname%.ISO
- nircmd.exe clipboard set %isodir%\%efifile%
- echo 开始添加EFI启动文件……
- nircmd.exe wait 1000
- nircmd.exe sendkeypress ctrl+alt+i
- nircmd.exe wait 1000
- nircmd.exe sendkeypress ctrl+v enter
- echo 开始保存ISO文件……
- nircmd.exe wait 1000
- nircmd.exe sendkeypress ctrl+s
- echo 退出UltraISO操作界面……
- nircmd.exe wait 1500
- nircmd.exe closeprocess ultraiso.exe
- echo 开始打包,请稍候……
- ultraiso -in %isodir%\..\%isoname%.ISO -d "%isodir%"
- goto end
- :Get_isoname
- set isoname=%~n1%
- goto :eof
- :END
- echo 操作全部完成!请按任意键退出……
- pause>nul
复制代码 其关键是用了一个小工具nircmd.exe来达成按键的目的。大致的逻辑是:
1、定义格式,加上BIOS启动,用ultraiso命令行产生一个小的模板ISO;
2、启动ultraiso图形界面打开模板ISO,通过nircmd.exe发送按键操作UI,加上EFI启动信息,再关闭图形界面;
3、再用命令行把要打包的文件加入进去。
注:经过与开发者沟通,最新版9.7.6.3829已经支持命令行加-secondboot来直接添加EFI启动项,因此以上可以直接加,不必再启动界面:
ultraiso.exe -jlong -l -imax -optimize %r% -boot %isodir%\%biosfile% -secondboot %isodir%\%efifile% -volu %isoname% -out %isodir%\..\%isoname%.ISO -d "%isodir%"
|
评分
-
查看全部评分
|