|
本帖最后由 BEIKING 于 2025-3-19 21:09 编辑
- @echo off
- if /i "%UserName%" == "SYSTEM" (Goto GotAdmin) else (reg query "HKLM\SYSTEM\ControlSet001\Control\MiniNT" 1>nul 2>nul&&Goto GotAdmin)
- :BatchGotAdmin
- Set _Args=%*
- if `%1` neq `` Set "_Args=%_Args:"=""%"
- 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
- :GotAdmin
- Pushd "%CD%"&cd /d "%~dp0"
- find /? 1>nul 2>nul||(Color cf&echo 找不到 find.exe 文件,按任意键退出。&Pause >nul&Exit /b)
- REM 内部参数初始化
- Set "Ext=*.jpg *.jpeg *.png *.gif *.bmp" :: 支持壁纸类型
- Set "Style=拉伸" :: 默认壁纸适应模式 (填充, 适应, 拉伸, 平铺, 居中, 跨区)
- :Start
- Title 切换壁纸&(if exist %WinDir%\System32\ureg.dll Mode 40,10 2>nul)&Color 2f
- for /f "tokens=2*" %%i in ('reg query "HKCU\Control Panel\Desktop" /v "WallPaper" 2^>nul') do Set "OWP=%%~j"
- 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"
- echo 壁纸数量: [%Count%]
- if %Count% == 0 Color cf&echo 壁纸类型: ↓&echo %Ext%&Call :Delay 3&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 /a-d-s-h /b /o:d %Ext% 2^>nul^|find /v "%~nx0"`) do (
- Copy "%%~f"+,, "%%~f" 1>nul 2>nul&Set "NWP=%%~f"&Goto 设置壁纸
- )
- Exit /b
- :随机切换
- Set Num=1&Set /a RNum=%Random%%%%Count%+1 2>nul
- Setlocal EnableDelayedExpansion
- for /f "tokens=* usebackq" %%f in (`dir /a-d-s-h /b %Ext% 2^>nul^|find /v "%~nx0"`) do (
- if !Num! == %RNum% (Endlocal&Set RNum=[%RNum%]&Set "NWP=%%~f"&Goto 设置壁纸)
- Set /a Num+=1
- )
- Endlocal&Exit /b
- :设置壁纸
- 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 /i "%OWP%" == "%NWP%" if %Count% gtr 1 Goto 随机切换
- echo "%NWP%"|find /i "填充" 1>nul 2>nul&&Set "Style=填充"
- echo "%NWP%"|find /i "适应" 1>nul 2>nul&&Set "Style=适应"
- echo "%NWP%"|find /i "拉伸" 1>nul 2>nul&&Set "Style=拉伸"
- echo "%NWP%"|find /i "平铺" 1>nul 2>nul&&Set "Style=平铺"
- echo "%NWP%"|find /i "居中" 1>nul 2>nul&&Set "Style=居中"
- echo "%NWP%"|find /i "跨区" 1>nul 2>nul&&Set "Style=跨区"
- echo 适应模式: %Style%
- echo %GP%: %RNum% ↓
- echo %NWP%
- Pecmd.exe /? 1>nul 2>nul&&(Pecmd.exe WALL "%NWP%"&® 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)
- Set var=&for %%i in (填充010, 适应06, 拉伸02, 平铺10, 居中00, 跨区022) do (echo "%%~i"|find /i "%Style%" 1>nul 2>nul&&Set "var=%%~i")
- if defined var (
- reg add "HKCU\Control Panel\Desktop" /f /v "TileWallpaper" /t REG_SZ /d "%var:~2,1%" 1>nul 2>nul
- reg add "HKCU\Control Panel\Desktop" /f /v "WallpaperStyle" /t REG_SZ /d "%var:~3%" 1>nul 2>nul
- )
- Call :Flush
- if not defined Args Call :Delay 1
- Exit /b
- :Delay :: 延迟操作 <%1=Sec|延迟秒数> [%2=+|显示倒计时]。
- if "%~2" == "+" (Set #=2) else Set #=1
- 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
- Goto :eof
- :Flush :: 可能不生效,需要手动重启资源管理器。
- Set N=20
- :FLoop
- Set /a N-=1&@start "" rundll32.exe user32.dll,UpdatePerUserSystemParameters 1,True
- if "%n%" neq "0" Goto FLoop
- 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格式执行会报错
将脚本文件置于壁纸同一目录执行,不支持下级目录。
(附件为旧版,帖子源码为新版)
|
评分
-
查看全部评分
|