EZB 论坛's Archiver

hhh333 发表于 2021-5-7 10:34

曲线救国解决命令行不能添加EFI启动的问题

经过咨询,目前的版本不支持命令行加EFI启动,只能通过界面操作来达成。现在是想还是由批处理脚本来操控界面,达成操作目的,经测试是可行的,现共享给大家。当然,也希望开发者在下一版能够在命令行中支持。
以下是脚本:[code]@echo off
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
[/code]其关键是用了一个小工具nircmd.exe来达成按键的目的。大致的逻辑是:
1、定义格式,加上BIOS启动,用ultraiso命令行产生一个小的模板ISO;
2、启动ultraiso图形界面打开模板ISO,通过nircmd.exe发送按键操作UI,加上EFI启动信息,再关闭图形界面;
3、再用命令行把要打包的文件加入进去。

[[i] 本帖最后由 hhh333 于 2021-5-7 10:37 编辑 [/i]]

527104427 发表于 2021-5-22 14:20

还能这么玩吗

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.