Board logo

标题: [娱乐]替换OEM LOGO [打印本页]

作者: quya     时间: 2008-8-2 18:35    标题: [娱乐]替换OEM LOGO
无聊之下, 编了个批处理替换OEM LOGO, 纯粹娱乐。 http://www.namipan.com/d/a3b24012778ea224ee0f11e4f50269eaa0f1de6107260200 做成自解压文件之后大约100多K。 请高手看看如何改良。主要是显示菜单部分, 如何改进代码让程序自动调整间隙, 以便提高程序的通用性。因为类似的菜单经常会用到。 批处理代码:
@echo off
TITLE 替换OEM图标-quya设计
for /f "skip=1 tokens=1,2*" %%i in (BRAND.INI) do set _%%i=%%k&set __%%i=%%j
:loop
cls
echo 共计29种可供选择:
echo.
echo (1)%_1%        (2)%_2%        (3)%_3%        (4)%_4%        (5)%_5%
echo (6)%_6%        (7)%_7%   (8)%_8%        (9)%_9%      (A)%_A%
echo (B)%_B%     (C)%_C%        (D)%_D%        (E)%_E%        (F)%_F%
echo (G)%_G%        (H)%_H%        (I)%_I%         (J)%_J%(K)%_K%
echo (L)%_L%          (M)%_M%         (N)%_N%        (O)%_O%        (P)%_P%
echo (Q)%_Q%        (R)%_R%         (S)%_S%        (T)%_T%    (U)随机
echo.
set/p var1=请输入代号并回车:
if /i "%var1%"=="U" goto random
call set var2=%%__%var1%%%
call set brand=%%_%var1%%%
if not defined var2 (goto loop) else (goto change)
:random
set /a var1=%random%%%29
set /a var2=%var1%+2
for /f "tokens=2*" %%i in ('findstr /n . BRAND.INI^|findstr "^%var2%:"') do set var2=%%i&set brand=%%j
:change
expand oeminfo.cab /f:%var2%.* . >nul
move /y %var2%.bmp %SYSTEMROOT%\System32\oemlogo.bmp
move /y %var2%.ini %SYSTEMROOT%\System32\oeminfo.ini
echo.
echo 已成功替换成%brand%图标
echo.
pause
brand.ini 内容
序号	目录名		品牌名
1	Acer		宏碁
2	AMOI		夏新
3	ASUS		华硕
4	BenQ		明基
5	COMPAQ		康柏
6	Dell		戴尔
7	Emachines	Emachines
8	Founder		方正
9	FUJI		富士通
A	FUJITSU		富士通-西门子
B	Gateway		Gateway
C	GIGABYTE	技嘉
D	GREATWAL	长城
E	Haier		海尔
F	Hasee		神舟
G	HEDY		七喜
H	HPQ		惠普
I	IBM		IBM
J	LEGEND		联想(旧版)
K	Lenovo		联想
L	LG		LG
M	NEC		NEC
N	Panasoni	松下
P	Pavilion	惠普 Pavilion
O	SAMSUNG		三星
Q	Sony		索尼
R	TCL		TCL
S	TOSHIBA		东芝
T	TSINGHUA	清华同方
oeminfo.cab 包含的文件
ACER.BMP
ACER.INI
AMOI.BMP
AMOI.INI
ASUS.BMP
ASUS.INI
BenQ.bmp
BenQ.ini
COMPAQ.BMP
COMPAQ.INI
DELL.BMP
DELL.INI
EMACHINES.BMP
EMACHINES.INI
Founder.BMP
Founder.INI
FUJI.bmp
FUJI.INI
FUJITSU.BMP
FUJITSU.INI
Gateway.bmp
Gateway.ini
GIGABYTE.BMP
GIGABYTE.INI
GREATWAL.BMP
GREATWAL.INI
HAIER.BMP
HAIER.INI
Hasee.BMP
Hasee.INI
HEDY.BMP
HEDY.INI
HPQ.BMP
HPQ.INI
IBM.BMP
IBM.INI
LEGEND.BMP
LEGEND.INI
LENOVO.BMP
LENOVO.INI
LG.BMP
LG.INI
NEC.BMP
NEC.INI
Panasoni.BMP
Panasoni.INI
PAVILION.BMP
PAVILION.INI
SAMSUNG.BMP
SAMSUNG.INI
Sony.BMP
Sony.INI
TCL.BMP
TCL.INI
TOSHIBA.BMP
TOSHIBA.INI
TSINGHUA.BMP
TSINGHUA.INI
[ Last edited by quya on 2008-8-2 at 08:47 PM ]

作者: luowei14     时间: 2008-8-2 22:12
这都没人顶。。。。。。。。。?

作者: styusi     时间: 2008-8-6 12:24
顶下

作者: knoppix7     时间: 2008-8-6 17:04
自动调整间隙 貌似{TAB}就可以..

作者: quya     时间: 2008-8-6 17:11
Originally posted by knoppix7 at 2008-8-6 05:04 PM: 自动调整间隙 貌似{TAB}就可以..
如何具体操作, 我试过直接打TAB, 不行. 你把这个{TAB}写在程序里吗? 谢谢!

作者: ntsu     时间: 2008-10-9 16:53
l老土的好东西!顶了!

作者: bat-zw     时间: 2008-10-9 17:23
老土,好久不见了,关于显示对齐可参照我以下的代码:
@echo off
for /l %%i in (1,1,10) do call,set "kong=%%kong%% "
set "code=12 123 1234 12345 123456 1234567"
for %%i in (%code%) do (
     set "str=%%i%kong%"
     call,echo              #%%str:~,10%%#
)
pause>nul