标题: [其他] [已解决]随机换桌面墙纸! [打印本页]
作者: 生命接触 时间: 2008-10-13 13:20 标题: [已解决]随机换桌面墙纸!
- @echo off&setlocal enabledelayedexpansion
- title 随机更换桌面背景&color 1f
- :loop
- :: 获取当前目录下bmp文件的总数
- for %%a in (*.bmp) do set /a var+=1
- :: 提取一个随机数,范围在文件总数之内
- set /a w=%random%%%%var%+1
- :: 循环所有bmp文件,每次给num加1,当num的值等于随机数就以这个文件为桌面
- for %%a in (*.bmp) do (
- set /a num+=1
- if !num! equ !w! set wjm=%%a
- )
- )
- Rem ===================操作注册表=====================
- set regadd=reg add "HKEY_CURRENT_USER\Control Panel\Desktop"
- %regadd% /v TileWallpaper /d "0" /f>nul
- %regadd% /v Wallpaper /d "%wjm%" /f>nul
- %regadd% /v WallpaperStyle /d "2" /f>nul
- Rem ====================更新==========================
- RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
-
- ping 127.1 -n 5
- goto loop
复制代码
去掉开头的:loop 和结尾的ping后面,就是不循环执行.手动一下一下的点是可以成功!
加上循环以后就很难成功.执行十次大概就有一两次能成功换桌面!
[ 本帖最后由 生命接触 于 2008-10-13 14:44 编辑 ]
作者: pusofalse 时间: 2008-10-13 13:32
当然如此,var的值在不断累加,而BMP图片的数量却是固定的。
把:loop放到set /a w=%random%%%%var%+1下面。
作者: 生命接触 时间: 2008-10-13 13:42
也是不行..还是一样的情况.
作者: pusofalse 时间: 2008-10-13 14:00
- -|||看错了。。。
把:loop放在set /a w=%random%%%%var%+1的上面一行,并把set/a w=%random%%%%var%+1改为set/a w=%random%%%%var%+1,num=0
作者: 随风 时间: 2008-10-13 14:12
可以更简单点。- @echo off&setlocal enabledelayedexpansion
- title 随机更换桌面背景&color 1f
- :: 获取当前目录下bmp文件的总数
- for %%a in (*.bmp) do set /a var+=1&set .!var!=%%a
- :: 提取一个随机数,范围在文件总数之内
- :loop
- set /a w=%random%%%var+1
- set wjm=!.%w%!
-
- Rem ===================操作注册表=====================
- set regadd=reg add "HKEY_CURRENT_USER\Control Panel\Desktop"
- %regadd% /v TileWallpaper /d "0" /f>nul
- %regadd% /v Wallpaper /d "%wjm%" /f>nul
- %regadd% /v WallpaperStyle /d "2" /f>nul
- Rem ====================更新==========================
- RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
-
- ping 127.1 -n 5
- goto loop
复制代码
作者: 生命接触 时间: 2008-10-13 14:17
原帖由 pusofalse 于 2008-10-13 14:00 发表
- -|||看错了。。。
把:loop放在set /a w=%random%%%%var%+1的上面一行,并把set/a w=%random%%%%var%+1改为set/a w=%random%%%%var%+1,num=0
你的方法还是不行.不过非常感谢!!
作者: 生命接触 时间: 2008-10-13 14:18
随风版主的可以用.他改动过一点.不过有点看不明白为什么要那样改...
非常感谢!
作者: 生命接触 时间: 2008-10-13 14:27
@echo off&setlocal enabledelayedexpansion
title 随机更换桌面背景&color 1f
:: 获取当前目录下bmp文件的总数
for %%a in (*.bmp) do set /a var+=1
:: 提取一个随机数,范围在文件总数之内
set /a w=%random%%%%var%+1
:: 循环所有bmp文件,每次给num加1,当num的值等于随机数就以这个文件为桌面
for %%a in (*.bmp) do (
set /a num+=1
if !num! equ !w! set wjm=%%a
)
)
Rem ===================操作注册表=====================
set regadd=reg add "HKEY_CURRENT_USER\Control Panel\Desktop"
%regadd% /v TileWallpaper /d "0" /f>nul
%regadd% /v Wallpaper /d "%wjm%" /f>nul
%regadd% /v WallpaperStyle /d "2" /f>nul
Rem ====================更新==========================
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
ping 127.1 -n 5
start "bat本身绝对路径"
exit
这样好像也可以!但好像也失去意义了.呵呵....
作者: 生命接触 时间: 2008-10-13 14:43
我发的那段代码随机性不够强,很多时候会出现重复墙纸.
随风版主的更好..用VBS在开机的时候加载.我想效果会比较好看!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |