| @echo off | | Title 切换壁纸 | | MODE con: Cols=40 Lines=10 | | Color 2f | | | | Pushd "%CD%"&cd /d "%~dp0" | | for /f "tokens=2*" %%i in ('reg query "HKCU\Control Panel\Desktop" /v "WallPaper" 2^>nul') do Set "OWP=%%j" | | for /f "tokens=* usebackq" %%f in (`dir /b *.*^|find /v /c "%~nx0"`) do Set /a Count=%%f | | echo 壁纸数量: [%Count%] | | if %Count% == 0 Color cf&ping 127.1 -n 3 >nul&Exit /b | | | | REM 调用参数:-Next(默认) -Random +Next +Random | | Set CP=-&Set GP=顺序切换&Set Args=%1 | | if defined Args ( | | Set "CP=%Args:~0,1%" | | if /i `%Args:~1%` == `Random` Set GP=随机切换 | | ) | | Goto %GP% | | | | :顺序切换 | | for /f "tokens=* usebackq" %%f in (`dir /b /o:d *.*^|find /v "%~nx0"`) do ( | | Copy "%%f"+,, "%%f" 1>nul 2>nul&Set "NWP=%%f"&Goto 设置壁纸 | | ) | | | | :随机切换 | | Set /a RNum=%Random%%%%Count%+1 2>nul | | Set Num=1 | | setlocal enabledelayedexpansion | | for /f "tokens=* usebackq" %%f in (`dir /b *.*^|find /v "%~nx0"`) do ( | | if !Num! == %RNum% (endlocal&Set RNum=[%RNum%] &Set "NWP=%%f"&Goto 设置壁纸) | | Set /a Num+=1 | | ) | | | | :设置壁纸 | | if /i `%CP%` == `+` (Copy /y "%NWP%" "%WinDir%\Web\Wallpaper\%NWP%" >nul&&Set "NWP=%WinDir%\Web\Wallpaper\%NWP%") else Set "NWP=%~dp0%NWP%" | | if "%GP%" == "随机切换" if "%OWP%" == "%NWP%" if "%Count%" gtr "1" Goto 随机切换 | | echo %GP%: %RNum%↓ | | echo %NWP% | | if exist %SystemRoot%\System32\Pecmd.exe (Pecmd WALL "%NWP%"&? delete "HKCU\Control Panel\Desktop" /f /v "Wallpaper.PECMD" 1>nul 2>nul) else (reg add "HKCU\Control Panel\Desktop" /f /v "WallPaper" /t REG_SZ /d "%NWP%" 1>nul 2>nul&&Call :刷新) | | if not defined Args ping 127.1 -n 2 >nul | | Exit /b | | | | :刷新 :: 可能不生效,需要手动重启资源管理器。 | | Set n=20 | | :循环 | | Set /a n-=1 | | @start "" rundll32.exe user32.dll,UpdatePerUserSystemParameters 1,True | | if "%n%" neq "0" Goto 循环 | | Goto :eof | | | | | | | | | | | | PE系统,调用 Pecmd WALL 命令设置桌面壁纸,很稳定都生效 | | 正常系统,注册表设置壁纸路径后, | | 调用 rundll32.exe user32.dll,UpdatePerUserSystemParameters 1,True 刷新桌面, | | 有一定概率不生效。需要多次刷新 | | | | 调用参数: | | -Next 顺序切换壁纸(默认) | | +Next 顺序切换壁纸,壁纸文件拷入到%WinDir%\Web\Wallpaper\ | | -Random 随机切换壁纸 | | +Random 随机切换壁纸,壁纸文件拷入到%WinDir%\Web\Wallpaper\ | | | | 使用方法: | | 将脚本文件置于壁纸同一目录执行,不支持下级目录。 | | 壁纸目录只能有脚本文件和壁纸文件,不能存在其他文件或文件夹,会影响壁纸切换!COPY |
|