无忧启动论坛

标题: 关于生成ISO的问题 [打印本页]

作者: 6108    时间: 2012-6-4 13:10
标题: 关于生成ISO的问题
自由天空新版的PE里都有个“生成ISO.exe”,请问可不可以用批处理实现这个功能?

作者: chiannet    时间: 2012-6-4 14:33
这个程序能生成几种不同引导风格的ISO,内置cdimage、mkisofs,使用经多次稽查,甄别出来的极佳兼容的参数。它必需与sptuppe.exe联袂才能工作。
作者: 6108    时间: 2012-6-4 14:42
网上百度后发现去年9月左右发行的五子登科里有“生成iso.cmd”,觉得应该能用批处理实现啊?可惜我批处理仅知皮毛,不会!感觉这个东东挺方便的,修改完后运行下ISO就出来了,那位大侠能整一个出来啊?
作者: chiannet    时间: 2012-6-4 14:46
标题: 回复 #3 6108 的帖子
具体看cdimage、mkisofs的命令行
作者: chiannet    时间: 2012-6-4 14:54


  1. procedure CreateMINI;
  2. var
  3. p,z,a,b,w:string;
  4. SysTime: TsystemTime;
  5. begin
  6.   p:=ExtractShortPathName(ExtractFilePath(Application.ExeName))+'SKYPETEMP\';
  7.   z:='Sky123_Mini_PE';
  8.   a:=p+'..\'+z+'.iso';
  9.   if fileexists(a+'.bak') then begin SetfileAttr (a+'.bak',128); deletefile(a+'.bak'); end;
  10.   if fileexists(a) then
  11.    if not movefile(a,a+'.bak') then
  12.      begin
  13.        showmessage(a+'正被使用中!');
  14.        Application.Terminate;
  15.        exit;
  16.      end;
  17.     a:=p+'..\MYCD\AXPE\';
  18.     if fileexists(a+'grldr') then begin
  19.     zipFile(a+'grldr',a+'GRLDR.SKY');
  20.     movefile(a+'grldr',P);
  21.     unzipStream('cdimage',p+'CDIMAGE.EXE');
  22.     unzipStream('miniz',p+'b.bif');
  23.     GetSystemTime(SysTime);
  24.     if SysTime.wMonth<10 then a:='0'+IntToStr(SysTime.wMonth) else a:=IntToStr(SysTime.wMonth);
  25.     if SysTime.wday<10 then b:='0'+IntToStr(SysTime.wday) else b:=IntToStr(SysTime.wday);
  26.     a:=a+'/'+b+'/'+IntToStr(SysTime.wyear) +',';
  27.     if SysTime.whour<10 then b:='0'+IntToStr(SysTime.whour) else b:=IntToStr(SysTime.whour);
  28.     a:=a+b+':';
  29.     if SysTime.wminute<10 then b:='0'+IntToStr(SysTime.wminute) else b:=IntToStr(SysTime.wminute);
  30.     a:=a+b+':';
  31.     if SysTime.wsecond<10 then b:='0'+IntToStr(SysTime.wsecond) else b:=IntToStr(SysTime.wsecond);
  32.     w:=' -t'+a+b+' -g ';
  33.     a:= '"'+p;
  34.     b:=a+'cdimage.exe" -l"'+z+'" -h -n -m -o -d'+w+'-c -b'+a+'b.bif" -o "'+p+'..\mycd" "'+z+'.ISO"';
  35.     a:=p+'..\mycd\';
  36.     movefile(a+'AXPE\BOOTMGR',p);
  37.     movefile(a+'AXPE\BCD',p);
  38.     movefile(a+'AXPE\HDD',p);
  39.     WinExecAndWait32(b,1);
  40.     if fileexists(p+'BOOTFIX.BIN') then moveFile(p+'BOOTFIX.BIN',a+'AXPE\');
  41.     movefile(p+'BOOTMGR',a+'AXPE\');
  42.     movefile(p+'BCD',a+'AXPE\');
  43.     movefile(p+'HDD',a+'AXPE\');
  44.     movefile(p+'grldr',a+'AXPE\');
  45.     if fileexists(a+'AXPE\GRLDR.SKY') then deletefile(a+'AXPE\GRLDR.SKY');
  46.     if Directoryexists(p) then winExec(pchar('cmd /c RD /S /Q "'+p+'"'), SW_HIDE);
  47.     end else if lg963 then showmessage('未发现 '+ExtractFilePath(Application.ExeName)+'MYCD\AXPE\GRLDR!') else
  48.        showmessage(ExtractFilePath(Application.ExeName)+'MYCD\AXPE\GRLDR is missing!');
  49. end;
复制代码


以上是创建ntldr引导格式的ISO时的过程,当中又调用了下面一些函数或过程.
zipFile(...);
movefile(...);
unzipStream(...)
GetSystemTime(...)
作者: 6108    时间: 2012-6-4 17:39
有点儿像是Delphi 函数?好多判断等,晕了




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3