[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]随机换桌面墙纸!

  1. @echo off&setlocal enabledelayedexpansion
  2. title 随机更换桌面背景&color 1f
  3. :loop
  4. ::  获取当前目录下bmp文件的总数
  5. for %%a in (*.bmp) do set /a var+=1
  6. :: 提取一个随机数,范围在文件总数之内
  7. set /a w=%random%%%%var%+1
  8. :: 循环所有bmp文件,每次给num加1,当num的值等于随机数就以这个文件为桌面
  9. for %%a in (*.bmp) do (
  10.   set /a num+=1
  11.   if !num! equ !w! set wjm=%%a
  12. )
  13. )
  14. Rem ===================操作注册表=====================
  15. set regadd=reg add "HKEY_CURRENT_USER\Control Panel\Desktop"
  16. %regadd% /v TileWallpaper /d "0" /f>nul
  17. %regadd% /v Wallpaper /d "%wjm%" /f>nul
  18. %regadd% /v WallpaperStyle /d "2" /f>nul
  19. Rem ====================更新==========================
  20. RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
  21. ping 127.1 -n 5
  22. goto loop
复制代码



去掉开头的:loop 和结尾的ping后面,就是不循环执行.手动一下一下的点是可以成功!
加上循环以后就很难成功.执行十次大概就有一两次能成功换桌面!


[ 本帖最后由 生命接触 于 2008-10-13 14:44 编辑 ]

当然如此,var的值在不断累加,而BMP图片的数量却是固定的。
把:loop放到set /a w=%random%%%%var%+1下面。
心绪平和,眼藏静谧。

TOP

也是不行..还是一样的情况.

TOP

- -|||看错了。。。
把:loop放在set /a w=%random%%%%var%+1的上面一行,并把set/a w=%random%%%%var%+1改为set/a w=%random%%%%var%+1,num=0
心绪平和,眼藏静谧。

TOP

可以更简单点。
  1. @echo off&setlocal enabledelayedexpansion
  2. title 随机更换桌面背景&color 1f
  3. ::  获取当前目录下bmp文件的总数
  4. for %%a in (*.bmp) do set /a var+=1&set .!var!=%%a
  5. :: 提取一个随机数,范围在文件总数之内
  6. :loop
  7. set /a w=%random%%%var+1
  8. set wjm=!.%w%!
  9. Rem ===================操作注册表=====================
  10. set regadd=reg add "HKEY_CURRENT_USER\Control Panel\Desktop"
  11. %regadd% /v TileWallpaper /d "0" /f>nul
  12. %regadd% /v Wallpaper /d "%wjm%" /f>nul
  13. %regadd% /v WallpaperStyle /d "2" /f>nul
  14. Rem ====================更新==========================
  15. RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
  16. ping 127.1 -n 5
  17. goto loop
复制代码
技术问题请到论坛发帖求助!

TOP

原帖由 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





你的方法还是不行.不过非常感谢!!

TOP

随风版主的可以用.他改动过一点.不过有点看不明白为什么要那样改...

非常感谢!

TOP

@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

这样好像也可以!但好像也失去意义了.呵呵....

TOP

我发的那段代码随机性不够强,很多时候会出现重复墙纸.

随风版主的更好..用VBS在开机的时候加载.我想效果会比较好看!

TOP

返回列表