返回列表 发帖

[系统相关] 批处理桌面背景壁纸-设置-随机或固定图片-win10和win11测试通过

@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
1

评分人数

本帖最后由 ygqiang 于 2025-1-27 15:59 编辑

桌面壁纸-随机获取图片设置-指定目录
@echo off &setlocal
set "mu=D:\122"
copy /y pecmd.exe "%SystemRoot%\System32"
cd /d "%mu%" &dir /b/a-d *.jpg *.png>#
for /f %%n in ('find /c /v ""^<#') do (set "n=%%n")
set/a "r=1+%random%%%%n%"
(for /l %%k in (1,1,%r%) do set/p "jF=")<#
set "随机=%jF%"
echo,%随机%
pause
pecmd.exe wall "%mu%\%随机%"
del /q "#"&exit/bCOPY

TOP

TOP

感谢楼主分享

TOP

桌面壁纸--固定文件
@echo off &setlocal
cd /d "%~dp0"
set "mu=%~dp0"
set "wj=img105.jpg"
copy /y pecmd.exe "%SystemRoot%\System32"
echo %mu%
1pause
pecmd.exe wall "%mu%%wj%"
del /q "#"&exit/bCOPY

TOP

回复 2# ygqiang


    这里要生成#,最后又删除#
=======================
能不能弄成不生成这个#,也达到一样的效果?
我是小白,希望老师多多帮助

TOP

返回列表