前一阵研究某PE,觉得有个功能有点意思,这个PE启动时随机选择桌面背景。研究了一下,代码很简单,是将图片内置于PE中,文件名按数字规律命名,随机数产生一个匹配的文件名,然后LOGO命令设置背景。我对这个功能很有兴趣,就是有两个小问题,一是图多了的话,内置的话PE尺寸又大了不少,哪怕用PS加工过损失部分质量也很可观的;二是图像文件名、图像总个数有要求。于是决定弄个外置的、不要求文件名和文件个数的。
花了几个小时,整出个批处理来,使用7z将图像文件打包好,只要能访问到这个7z文件,在INI文件中,设置背景的命令前,使用两条语句,就能使用随机切换。
代码如下:
@Echo OFF
SetLocal ENABLEDELAYEDEXPANSION
Set count=0
Set files=
For /F "tokens=* skip=19" %%a In ('7z l -ir0^^!*.jpg %1') Do (
Set file=%%a
Set t=!file:~0,1!
If !t!==- Goto SELECT
Set t=!file:~20,1!
If !t!==. (
Set files=!files!"!file:~53!"
Set /A count=count+1
)
)
:SELECT
Set /A index=%2 %% count
For %%a In (!files!) Do (
If !index! EQU 0 (
Echo !index!
Set file=%%a
Set t=%%~na%%~xa
Goto EXTRACT
)
Set /A index=index-1
)
:EXTRACT
7z e -aoa -oX:\Windows\Web\Wallpaper\Windows %1 !file!
Del X:\Windows\Web\Wallpaper\Windows\img0.jpg
Ren "X:\Windows\Web\Wallpaper\Windows\!t!" img0.jpg
Set file=
Set files=
Set count=
Set index=
Set t=