|
本帖最后由 hfut 于 2015-6-24 20:43 编辑
制作PE时,桌面、开始菜单、任务栏等需要生成工具菜单以方便调用。传统方法都是手工逐条编辑INI菜单配置文件,然后用 PECMD LOAD XXX.INI的命令执行并生成菜单快捷方式。这种方法工作量大,极易出错,偶尔调整了一个软件时,如果忘记同步编辑菜单的话,铁定会出错,无法生成对应的菜单项!
从此以后,调整软件只需把程序直接拷贝到工具目录的对应子目录中就行了,脚本会自动寻找 EXE 并按对应的子目录分类生成菜单配置,无需手工改INI文件!
建议一个工具只有一个EXE,如果有多个的话,建议打包成一个EXE,以免生成无关菜单项。
因此就有了制作一个自动生成菜单配置文件的想法。以下代码已经测试通过,瞬间生成菜单配置文件。
实际使用时,可先隐藏执行这个菜单配置生成脚本,然后再加载它生成的配置文件。
===========以下是代码===========
@echo off
rem PE 自动生成工具菜单配置文件脚本
rem By 深山红叶
rem 从此不用逐条编写菜单了!
rem 声明:自由,谢绝捆绑、给浏览器改主页、加尾巴的人使用!
rem
rem 1.请将本脚本文件在工具目录的顶层目录(比如 \PETOOLS);
rem 2.请将工具程序分门别类存放在工具子目录,注意程序文件名务必用生成菜单时要用的名称,比如“Diskgenu.exe”建议改成“磁盘精灵.exe”,以方便生成菜单后的菜单项直接拥有直观的名称。
rem 以下是效果演示,可放在某个目录下运行测试
rem 先清除临时文件,方便测试时避免重复生成内容
del %TEMP%\*.ini
setlocal EnableDelayedExpansion
rem 以下临时文件扩展名故意用INI,以方便以上一条命令清除。PE下由于临时目录下不太可能存在这类文件,因此清除临时文件的命令可不要。此仅为测试方便考虑。
FOR /F "delims==" %%i IN ('dir *.exe /s /b') DO @echo %%~fi>>%TEMP%\~1.ini
FOR /F "delims==" %%i IN ('dir *.exe /s /b') DO @echo %%~ni>>%TEMP%\~2.ini
set n=0
for /f "tokens=*" %%a in (%TEMP%\~1.ini) do (set /a n+=1
set a!n!=%%a
set x=!n!)
set n=0
for /f "tokens=*" %%b in (%TEMP%\~2.ini) do (set /a n+=1
set b!n!=%%b)
for /l %%c in (1,1,%x%) do (if defined b%%c echo LINK 路径变量\!b%%c!,!a%%c!>>%TEMP%\TOOLS.INI)
rem 上一行为测试直观,使用了“路径变量”替代真正 变量名。实际使用时要改成以下类似的内容,下例用的是桌面的路径变量即%Desktop%
rem for /l %%c in (1,1,%x%) do (if defined b%%c echo LINK %Desktop%\!b%%c!,!a%%c!>>%TEMP%\TOOLS.INI)
rem 以下命令是方便测试,用记事本打开菜单配置内容。实际使用时可改成(rem 注释标志不要!):
rem PECMD LOAD %TEMP%\TOOLS.INI
Notepad %TEMP%\TOOLS.INI
========代码结束=======
这里放出来,供大家测试并指正,以便进一步完善。
另,以前本人的emca的ID好久不登录,已经无效了,联系管理员也没能找回来。
|
评分
-
查看全部评分
|