本帖最后由 527104427 于 2017-7-4 01:28 编辑 2012胡言乱语 发表于 2017-6-27 23:19 看你这么积极,我就好人当到底吧,用下面的代码即可显示中文。 要修正原版的问题不是那么简单的,我也是花了不少时间去研究它,毕竟不是自己的工具,不可能完全理解原作的意思。 SET$ &NLDD=0D 0A TEAM ENVI &hTMPWimInfo=| ENVI &WIMINFO=| ENVI &HEX_WIMINFO=| ENVI &Wstr=| ENVI &aSIZE=| ENVI &aDESC=| ENVI &bDESC=| ENVI &szVol= EXEC* -hide &WIMINFO=wimlib-imagex.exe info "Z:\sources\install.esd" --xml CODE *,%&WIMINFO%,*UNICODE,&HEX_WIMINFO SED &HEX_WIMINFO=0,0x0D 0x0A,0x0D 0x00 0x0A,%&HEX_WIMINFO% CODE *UNI,%&HEX_WIMINFO%,**UNICODE,&WIMINFO SED &WIMINFO=0,><,>%&NLDD%<,%&WIMINFO% FORX *NL &WIMINFO,&vln, {* MSTR * &F1=<1>&vln FIND $%&F1%=<IMAGE, {* SED &Lc=0,[="], ,%&vln% MSTR * &Wstr=<3>&Lc } LPOS* * &DISPOS=<TOTALBYTES>,1,&F1 IFEX $%&DISPOS%=1, {* SED &Lc=0,[\>\<], ,%&vln% MSTR * &aSIZE=<2>&Lc Calc_Part &aSIZE %&aSIZE% ENVI &szVol=[%&aSIZE%] } LPOS* * &DISPOS=<NAME>,1,&F1 IFEX $[ %&DISPOS%<>1 & '%&aDESC%'='' ], LPOS* * &DISPOS=<DISPLAYNAME>,1,&F1 IFEX $%&DISPOS%=1, {* LPOS* * &cPOS1=>,1,&vln LPOS* * &cPOS2=<,2,&vln CALC #&cPOS1=%&cPOS1%+1 CALC #&Lc=%&cPOS2%-%&cPOS1% MSTR * &aDESC=%&cPOS1%,%&Lc%,&vln SED &aDESC=0,\[,[,%&aDESC% SED &aDESC=0,\],],%&aDESC% } LPOS* * &DISPOS=<DESCRIPTION>,1,&F1 IFEX $[ %&DISPOS%<>1 & '%bDESC%'='' ], LPOS* * &DISPOS=<DISPLAYDESCRIPTION>,1,&F1 IFEX $%&DISPOS%=1, {* LPOS* * &cPOS1=>,1,&vln LPOS* * &cPOS2=<,2,&vln CALC #&cPOS1=%&cPOS1%+1 CALC #&Lc=%&cPOS2%-%&cPOS1% MSTR * &bDESC=%&cPOS1%,%&Lc%,&vln FIND $%&bDESC%<>, ENVI &bDESC=描述:%&bDESC% } FIND $%&F1%=</IMAGE>, TEAM ENVI &hTMPWimInfo=%&hTMPWimInfo%%&Wstr% %&aDESC% %&szVol% %&bDESC%%&NLDD%| ENVI &Wstr=| ENVI &aSIZE=| ENVI &aDESC=| ENVI &bDESC=| ENVI &szVol= } _SUB Calc_Part ENVI &ax4= ENVI &ax1=%2 CALC &ax1=%&ax1% FORX * 1099511627776T 1073741824G 1048576M 1024K 0B ,&ax2, {* ENVI &ax3=%&ax4% FIND $%&ax3%=, ENVI &ax3=KT MSTR &ax4=-1,1,%&ax2% SED &ax5=0,%&ax4%,,%&ax2% IFEX $%&ax1%>=%&ax5%, {* CALC &ax6=%&ax1%/%&ax5%##01 TEAM ENVI &ax7=%&ax6%| ENVI &ax8=%&ax4%| IFEX $%&ax6%>=1000, TEAM CALC &ax7=%&ax6%/1024##01| ENVI &ax8=%&ax3%| EXIT } } FIND $%&ax8%<>,!! TEAM ENVI &ax8= %&ax8%| FIND $%&ax8%<>B, ENVI &ax8=%&ax8%B ENVI-ret %1=%&ax7%%&ax8% _END MESS. [%&hTMPWimInfo%] |
本帖最后由 huaqingyuan 于 2017-8-28 18:43 编辑 我也写了一个, _SUB wiminfo EXEC* &ALL=!wimlib-imagex.exe info "%~1" --xml SET$ &NLDD=0D 0A SED &ALL=0,><,>%&NLDD%<,%&ALL% envi~ &&g=%2 FORX *NL &ALL,&&Vi, { MSTR -delims:< &a=<2>%&Vi% MSTR -delims:> &e,&f=<1><2>%&a% MSTR -delims:= &c,&d=<1><2>%&e% find $%&c%=IMAGE INDEX,envi &g=%&g%%&NLDD% INDEX=%&d% find $%&e%=NAME,envi &g=%&g% NAME="%&f%" find $%&e%=TOTALBYTES,team CALC -base=10 &j=%f%/1048576|envi &g=%&g% size="%&j%M" find $%&e%=DESCRIPTION,envi &g=%&g% 描述="%&f%" find $%&a%=/IMAGE>,envi &g=%&g%%&NLDD% } envi-ret1 %2=%&g% _END call @wiminfo "c:\Intel.wim" &info mess %&info% 输出结果在按照需求处理一下就好,有INDEX=X这样的行就是有用的行! |
本帖最后由 wuhuayu 于 2017-9-6 22:28 编辑 for |
aimengyu 发表于 2017-7-9 23:16 搜不到GHO,下拉列表还要出现什么东西吗?system.gho改个名字(abc.wim),很简单的嘛! |
哈哈哈 上次看你回答后,说将'><"中间插个回车,我就在不断的找方法,最后在网上找到了一个字符串工具sed,我用这个也解决了, 就是这个小工具压缩后有1m左右代码如下 EXEC =!CMD.EXE /C %&gexlib% info --xml %1 >1.txt CODE -UNICODE,1.txt,-UTF8,2.txt EXEC =!CMD.EXE /C sed -i "s/></>\n</g" 2.txt CODE -UTF8,2.txt,-UNICODE,ppp.txt READ ppp.txt,**,&WIMINFO FILE 1.TXT FILE 2.TXT FILE ppp.TXT FORX *NL &WIMINFO,&vln, 先导出,在转换编码,在用sed修改2.txt ,这样就理顺了,在转换会编码,最后读取这个文本文件 在pecmd里看sed的说明,没看懂 刚才看了你给的代码 又对着说明看了一遍,有点理解了 谢谢老五了 |
谢谢老师,辛苦了。 |
rzp428 发表于 2017-6-28 08:12 改了 |
本帖最后由 rzp428 于 2017-6-28 08:22 编辑 527104427 发表于 2017-6-27 13:43 建议老师解除此限制,毕竟热备份者为数不多,大多是用在pe下,ISO挂载可以增加64位的软件,这样一个x86就可以应用多种环境,且体积小巧。 |
2012胡言乱语 发表于 2017-6-27 23:19 我用易语言开发完成了!这也是我当初没将CGI修改成支持ESD中文的原因了 当时有几个小伙伴叫我改 但是我对PECMD不熟悉 |
2012jiashanni 发表于 2017-6-26 08:08 映像里有好几个分卷,导出后 里面所有文本就一行 太长了 pecmd命令不太好读啊 |
糊涂 发表于 2017-6-27 13:21 纯x86的版本运行在x64系统中,ghost和wimlib-imagex无法热备份,挂载ISO的软件也不能正常使用,为了避免不必要的问题,就限制使用了。你可以用x64或自适应版。 如果这个限制不够人性化的话,可以解除的。 |
527104427 发表于 2017-6-27 12:51 PE环境也是两年前的大众WIN8X64PE,运行“贝壳”修改的3.2版本CGI可以正常运行, 在此环境下无法运行5哥修改的这个版本…… ![]() 我把系统备份还原了一下,再次测试…… 在系统环境下测试已经可以正常操作。 ![]() |
本帖最后由 527104427 于 2017-6-27 12:53 编辑 糊涂 发表于 2017-6-27 11:54 老兄能否提供测试PE和ISO的下载地址?我好改进程序 正常系统可以远程看看 |
本帖最后由 糊涂 于 2017-6-27 12:09 编辑 527104427 发表于 2017-6-25 21:46 5哥,这个版本是否是“最新”版?历史遗留问题 ![]() |
直截用批处理提取啊,for /f 语句 |
527104427 发表于 2017-6-26 11:48 ![]() ![]() |
zhoubin 发表于 2017-6-26 07:41 我在潜水啊,安心当个伸手党,多好啊 |
zhoubin 发表于 2017-6-26 07:41 他剃光头了 |
2012胡言乱语 发表于 2017-6-25 21:45 用PECMD处理文本啊,方法有千百种,我是直接将><中间插个回车 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.