无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 7430|回复: 35
打印 上一主题 下一主题

[原创] [20250319] 批处理:顺序和随机设置桌面壁纸(适用PE和正常系统)

  [复制链接]
跳转到指定楼层
1#
发表于 2022-11-29 15:12:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 BEIKING 于 2025-3-19 21:09 编辑
  1. @echo off
  2. if /i "%UserName%" == "SYSTEM" (Goto GotAdmin) else (reg query "HKLM\SYSTEM\ControlSet001\Control\MiniNT" 1>nul 2>nul&&Goto GotAdmin)
  3. :BatchGotAdmin
  4. Set _Args=%*
  5. if `%1` neq `` Set "_Args=%_Args:"=""%"
  6. if exist %WinDir%\System32\fltMC.exe fltMC 1>nul 2>nul||mshta VBScript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c """"%~f0"" %_Args%""",,"runas",1)(Window.Close) 2>nul&&Exit /b

  7. :GotAdmin
  8. Pushd "%CD%"&cd /d "%~dp0"
  9. find /? 1>nul 2>nul||(Color cf&echo 找不到 find.exe 文件,按任意键退出。&Pause >nul&Exit /b)
  10. REM 内部参数初始化
  11. Set "Ext=*.jpg *.jpeg *.png *.gif *.bmp" :: 支持壁纸类型
  12. Set "Style=拉伸" :: 默认壁纸适应模式 (填充, 适应, 拉伸, 平铺, 居中, 跨区)

  13. :Start
  14. Title 切换壁纸&(if exist %WinDir%\System32\ureg.dll Mode 40,10 2>nul)&Color 2f
  15. for /f "tokens=2*" %%i in ('reg query "HKCU\Control Panel\Desktop" /v "WallPaper" 2^>nul') do Set "OWP=%%~j"
  16. Set Count=0&for /f "tokens=* usebackq" %%f in (`dir /a-d-s-h /b %Ext% 2^>nul^|find /v /c "%~nx0"`) do Set /a "Count=%%~f"
  17. echo 壁纸数量: [%Count%]
  18. if %Count% == 0 Color cf&echo 壁纸类型: ↓&echo  %Ext%&Call :Delay 3&Exit /b
  19. REM 调用参数:-Next(默认) -Random +Next +Random
  20. Set CP=-&Set GP=顺序切换&Set "Args=%~1"
  21. if defined Args (
  22.     Set "CP=%Args:~0,1%"
  23.     if /i "%Args:~1%" == "Random" Set GP=随机切换
  24. )
  25. Goto %GP%

  26. :顺序切换
  27. for /f "tokens=* usebackq" %%f in (`dir /a-d-s-h /b /o:d %Ext% 2^>nul^|find /v "%~nx0"`) do (
  28.     Copy "%%~f"+,, "%%~f" 1>nul 2>nul&Set "NWP=%%~f"&Goto 设置壁纸
  29. )
  30. Exit /b

  31. :随机切换
  32. Set Num=1&Set /a RNum=%Random%%%%Count%+1 2>nul
  33. Setlocal EnableDelayedExpansion
  34. for /f "tokens=* usebackq" %%f in (`dir /a-d-s-h /b %Ext% 2^>nul^|find /v "%~nx0"`) do (
  35.     if !Num! == %RNum% (Endlocal&Set RNum=[%RNum%]&Set "NWP=%%~f"&Goto 设置壁纸)
  36.     Set /a Num+=1
  37. )
  38. Endlocal&Exit /b

  39. :设置壁纸
  40. if /i "%CP%" == "+" (Copy /y "%NWP%" "%WinDir%\Web\Wallpaper\%NWP%" >nul&&Set "NWP=%WinDir%\Web\Wallpaper\%NWP%") else Set "NWP=%~dp0%NWP%"
  41. if "%GP%" == "随机切换" if /i "%OWP%" == "%NWP%" if %Count% gtr 1 Goto 随机切换
  42. echo "%NWP%"|find /i "填充" 1>nul 2>nul&&Set "Style=填充"
  43. echo "%NWP%"|find /i "适应" 1>nul 2>nul&&Set "Style=适应"
  44. echo "%NWP%"|find /i "拉伸" 1>nul 2>nul&&Set "Style=拉伸"
  45. echo "%NWP%"|find /i "平铺" 1>nul 2>nul&&Set "Style=平铺"
  46. echo "%NWP%"|find /i "居中" 1>nul 2>nul&&Set "Style=居中"
  47. echo "%NWP%"|find /i "跨区" 1>nul 2>nul&&Set "Style=跨区"
  48. echo 适应模式: %Style%
  49. echo %GP%: %RNum% ↓
  50. echo %NWP%
  51. Pecmd.exe /? 1>nul 2>nul&&(Pecmd.exe WALL "%NWP%"&&reg delete "HKCU\Control Panel\Desktop" /f /v "Wallpaper.PECMD" 1>nul 2>nul)||(reg add "HKCU\Control Panel\Desktop" /f /v "WallPaper" /t REG_SZ /d "%NWP%" 1>nul 2>nul)
  52. Set var=&for %%i in (填充010, 适应06, 拉伸02, 平铺10, 居中00, 跨区022) do (echo "%%~i"|find /i "%Style%" 1>nul 2>nul&&Set "var=%%~i")
  53. if defined var (
  54.     reg add "HKCU\Control Panel\Desktop" /f /v "TileWallpaper" /t REG_SZ /d "%var:~2,1%" 1>nul 2>nul
  55.     reg add "HKCU\Control Panel\Desktop" /f /v "WallpaperStyle" /t REG_SZ /d "%var:~3%" 1>nul 2>nul
  56. )
  57. Call :Flush
  58. if not defined Args Call :Delay 1
  59. Exit /b

  60. :Delay :: 延迟操作 <%1=Sec|延迟秒数> [%2=+|显示倒计时]。
  61. if "%~2" == "+" (Set #=2) else Set #=1
  62. if exist %WinDir%\System32\timeout.exe (timeout /t %~1 %#%>nul) else if exist %WinDir%\System32\choice.exe (choice /t %~1 /d y /n >nul) else ping 127.1 -n %~1 >nul
  63. Goto :eof

  64. :Flush :: 可能不生效,需要手动重启资源管理器。
  65. Set N=20
  66. :FLoop
  67. Set /a N-=1&@start "" rundll32.exe user32.dll,UpdatePerUserSystemParameters 1,True
  68. if "%n%" neq "0" Goto FLoop
  69. Goto :eof
复制代码

PE系统,调用 Pecmd WALL 命令设置桌面壁纸,很稳定都生效
正常系统,注册表设置壁纸路径后,调用 rundll32.exe user32.dll,UpdatePerUserSystemParameters 1,True 刷新桌面,有一定概率不生效。需要多次刷新

【支持脚本内部参数设置】
Set "Ext=*.jpg *.jpeg *.png *.gif *.bmp" :: 支持壁纸格式
Set "Style=拉伸" :: 默认壁纸适应模式 (填充, 适应, 拉伸, 平铺, 居中, 跨区)

【支持命令行参数调用】
-Next               按顺序设置脚本所在文件夹图片为桌面壁纸 (无参默认)
-Random          按随机设置脚本所在文件夹图片为桌面壁纸
+Next              按顺序复制脚本所在文件夹图片到系统Web目录,并设置为桌面壁纸
+Random         按随机复制脚本所在文件夹图片到系统Web目录,并设置为桌面壁纸

【支持通过图片文件名,设置壁纸为指定适应模式】
若图片文件名带有以下名称,则设置壁纸为指定适应模式。
填充, 适应, 拉伸, 平铺, 居中, 跨区
例如:01_拉伸.jpg
   02_平铺.png
   03_居中.bmp

【使用方法】
复制源码到记事本保存,务必保存为ANSI格式,若为UTF-8格式执行会报错
将脚本文件置于壁纸同一目录执行,不支持下级目录。

(附件为旧版,帖子源码为新版)

_切换壁纸.rar

1.02 KB, 下载次数: 97, 下载积分: 无忧币 -2

评分

参与人数 2无忧币 +10 收起 理由
cuicongyuan + 5 赞一个!
9zhmke + 5 赞一个!

查看全部评分

2#
 楼主| 发表于 2022-11-29 15:13:33 | 只看该作者

感觉应该比用第三方程序方便
回复

使用道具 举报

3#
发表于 2022-11-29 15:23:50 | 只看该作者
是呀这串 rundll32.exe user32.dll,UpdatePerUserSystemParameters,我有时也不会刷新生效。墙纸没更换成功

点评

我处理了,连续刷新20次,,可以的  详情 回复 发表于 2022-11-29 15:27
回复

使用道具 举报

4#
 楼主| 发表于 2022-11-29 15:27:18 | 只看该作者
a583091790 发表于 2022-11-29 15:23
是呀这串 rundll32.exe user32.dll,UpdatePerUserSystemParameters,我有时也不会刷新生效。墙纸没更换成功

我处理了,连续刷新20次,,可以的

点评

也许需要延时再刷新  详情 回复 发表于 2022-11-29 20:35
回复

使用道具 举报

5#
发表于 2022-11-29 15:28:12 | 只看该作者
pe随机壁纸,有点意思
回复

使用道具 举报

6#
发表于 2022-11-29 15:31:47 | 只看该作者
我改成2次 试试可以不 (随机设置桌面壁纸)
   先谢谢了
回复

使用道具 举报

7#
发表于 2022-11-29 15:35:30 | 只看该作者


感觉应该比用第三方程序方便
回复

使用道具 举报

8#
发表于 2022-11-29 15:38:04 | 只看该作者
系统有换壁纸的功能啊!

点评

刚看到pecmd有定时器  发表于 2022-11-29 16:46
感觉正常系统用批处理随机换壁纸意义不大,毕竟系统有这个功能。PE倒可以玩玩,方法很多,不过做成定时换壁纸就接近正常系统的样子了,WinXShell有更换壁纸的功能,通过WinXShell实现可能更好  发表于 2022-11-29 16:20
回复

使用道具 举报

9#
发表于 2022-11-29 18:19:48 | 只看该作者
也许需要延时再刷新
回复

使用道具 举报

10#
发表于 2022-11-29 18:50:15 | 只看该作者
用处不大,感谢分享
回复

使用道具 举报

11#
发表于 2022-11-29 20:06:00 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
发表于 2022-11-29 20:09:53 | 只看该作者
谢谢分享
回复

使用道具 举报

13#
发表于 2022-11-29 20:25:37 | 只看该作者
支持!
回复

使用道具 举报

14#
发表于 2022-11-29 20:35:50 | 只看该作者
BEIKING 发表于 2022-11-29 15:27
我处理了,连续刷新20次,,可以的

也许需要延时再刷新
回复

使用道具 举报

15#
发表于 2022-11-29 21:27:32 | 只看该作者
感谢分享 很有用
回复

使用道具 举报

16#
发表于 2022-11-29 21:46:11 | 只看该作者
这个win7和win10不都可以随机更换壁纸吗?只要你选择主题就行了。

楼主这个应该是专门为PE设计的。
回复

使用道具 举报

17#
发表于 2022-11-29 21:50:58 | 只看该作者
感谢分享 很有用
回复

使用道具 举报

18#
发表于 2022-11-29 22:29:48 | 只看该作者
windows 11 系统 Set n=20 :循环 改成Set n=2 :循环 刷新2次没有更新壁纸,windows 11 PE没有问题,
回复

使用道具 举报

19#
发表于 2022-11-30 05:14:57 | 只看该作者
挺好的,换换风格。
回复

使用道具 举报

20#
发表于 2022-11-30 06:28:49 | 只看该作者
谢谢了啊
回复

使用道具 举报

21#
发表于 2022-11-30 09:18:30 | 只看该作者
来试试看呗。谢谢。
回复

使用道具 举报

22#
发表于 2022-11-30 09:43:50 | 只看该作者
感谢分享!
回复

使用道具 举报

23#
发表于 2022-12-3 17:21:50 | 只看该作者
Win7 X86 只能改一次,后面的不成功,结束explorer.exe也不行。也许需要重启
回复

使用道具 举报

24#
 楼主| 发表于 2023-3-20 11:13:48 | 只看该作者
壁纸切换脚本更新

调用参数:
-Next        顺序切换壁纸(默认)
+Next       顺序切换壁纸,壁纸文件拷入到%WinDir%\Web\Wallpaper\
-Random   随机切换壁纸
+Random  随机切换壁纸,壁纸文件拷入到%WinDir%\Web\Wallpaper\

使用方法:
将脚本文件置于壁纸同一目录执行,不支持下级目录。
壁纸目录只能有脚本文件和壁纸文件,不能存在其他文件或文件夹,会影响壁纸切换!
回复

使用道具 举报

25#
发表于 2023-3-20 16:46:22 | 只看该作者
随机壁纸,有点意思
回复

使用道具 举报

26#
发表于 2023-12-2 11:29:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

27#
发表于 2023-12-8 23:45:15 | 只看该作者
这个切换丝滑吗,会不会有闪屏现象?
回复

使用道具 举报

28#
发表于 2024-3-8 12:41:22 | 只看该作者
谢谢来着分享!!
回复

使用道具 举报

29#
发表于 2024-3-8 13:38:37 | 只看该作者
这个系统幻灯片不就是吗?
回复

使用道具 举报

30#
发表于 2024-3-16 10:29:38 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-4-26 00:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表