无忧启动论坛

标题: [20250319] 批处理:顺序和随机设置桌面壁纸(适用PE和正常系统) [打印本页]

作者: BEIKING    时间: 2022-11-29 15:12
标题: [20250319] 批处理:顺序和随机设置桌面壁纸(适用PE和正常系统)
本帖最后由 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


作者: BEIKING    时间: 2022-11-29 15:13

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

作者: a583091790    时间: 2022-11-29 15:23
是呀这串 rundll32.exe user32.dll,UpdatePerUserSystemParameters,我有时也不会刷新生效。墙纸没更换成功
作者: BEIKING    时间: 2022-11-29 15:27
a583091790 发表于 2022-11-29 15:23
是呀这串 rundll32.exe user32.dll,UpdatePerUserSystemParameters,我有时也不会刷新生效。墙纸没更换成功

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

作者: IDK灬飘渺    时间: 2022-11-29 15:28
pe随机壁纸,有点意思
作者: likeyouli    时间: 2022-11-29 15:31
我改成2次 试试可以不 (随机设置桌面壁纸)
   先谢谢了
作者: zp1688    时间: 2022-11-29 15:35


感觉应该比用第三方程序方便
作者: zhangze    时间: 2022-11-29 15:38
系统有换壁纸的功能啊!
作者: 9zhmke    时间: 2022-11-29 18:19
也许需要延时再刷新
作者: come77    时间: 2022-11-29 18:50
用处不大,感谢分享
作者: wy66    时间: 2022-11-29 20:06
谢谢分享

作者: 飞黄腾达9    时间: 2022-11-29 20:09
谢谢分享
作者: cuicongyuan    时间: 2022-11-29 20:25
支持!
作者: 9zhmke    时间: 2022-11-29 20:35
BEIKING 发表于 2022-11-29 15:27
我处理了,连续刷新20次,,可以的

也许需要延时再刷新
作者: liuyanjun    时间: 2022-11-29 21:27
感谢分享 很有用
作者: chinaren12    时间: 2022-11-29 21:46
这个win7和win10不都可以随机更换壁纸吗?只要你选择主题就行了。

楼主这个应该是专门为PE设计的。
作者: 2010laodu    时间: 2022-11-29 21:50
感谢分享 很有用
作者: lxj0209103    时间: 2022-11-29 22:29
windows 11 系统 Set n=20 :循环 改成Set n=2 :循环 刷新2次没有更新壁纸,windows 11 PE没有问题,
作者: dszsdyx    时间: 2022-11-30 05:14
挺好的,换换风格。
作者: miraclex    时间: 2022-11-30 06:28
谢谢了啊
作者: papachi    时间: 2022-11-30 09:18
来试试看呗。谢谢。
作者: jh198354    时间: 2022-11-30 09:43
感谢分享!
作者: being    时间: 2022-12-3 17:21
Win7 X86 只能改一次,后面的不成功,结束explorer.exe也不行。也许需要重启
作者: BEIKING    时间: 2023-3-20 11:13
壁纸切换脚本更新

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

使用方法:
将脚本文件置于壁纸同一目录执行,不支持下级目录。
壁纸目录只能有脚本文件和壁纸文件,不能存在其他文件或文件夹,会影响壁纸切换!
作者: baolinqiu1    时间: 2023-3-20 16:46
随机壁纸,有点意思
作者: nowayer    时间: 2023-12-2 11:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: 千城    时间: 2023-12-8 23:45
这个切换丝滑吗,会不会有闪屏现象?
作者: macowen    时间: 2024-3-8 12:41
谢谢来着分享!!

作者: hycsl888    时间: 2024-3-8 13:38
这个系统幻灯片不就是吗?
作者: hehuiying    时间: 2024-3-16 10:29
谢谢分享
作者: hehuiying    时间: 2024-4-1 00:41
谢谢分享
作者: wn168cn@163.com    时间: 2024-10-24 11:26
感谢楼主分享
作者: BEIKING    时间: 2025-3-19 21:10
[20250319] 批处理:顺序和随机设置桌面壁纸(适用PE和正常系统)




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3