windows通过批处理让电脑每天自动设置bing桌面背景
概要
{
"images": [
{
"startdate": "20250610",
"fullstartdate": "202506101600",
"enddate": "20250611",
"url": "/th?id=OHR.FlamingosNamibia_ZH-CN3639748956_UHD.jpg&rf=LaDigue_UHD.jpg&pid=hp&w=3840&h=2160&rs=1&c=4",
"urlbase": "/th?id=OHR.FlamingosNamibia_ZH-CN3639748956",
"copyright": "大红鹳,吕德里茨,纳米比亚 (© Karine Aigner/TANDEM Stills + Motion)",
"copyrightlink": "/search?q=%e5%a4%a7%e7%ba%a2%e9%b9%b3&form=hpcapt&mkt=zh-cn",
"title": "潮汐间的芭蕾",
"quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20250610_FlamingosNamibia%22&FORM=HPQUIZ",
"wp": true,
"hsh": "1f6b2ef4d9ddd344a0ec8166b041b206",
"drk": 1,
"top": 1,
"bot": 1,
"hs": []
}
],
"tooltips": {
"loading": "正在加载...",
"previous": "上一个图像",
"next": "下一个图像",
"walle": "此图片不能下载用作壁纸。",
"walls": "下载今日美图。仅限用作桌面壁纸。"
}
}
下面就介绍如何通过批处理及vbs脚本,无需安装第三方软件实现电脑每天自动设置bing每日一图壁纸。
脚本实现
change_desktop_background.bat
把下面的代码保存为change_desktop_background.bat
文件,编码设置为UTF-8
,通过双击运行该文件就可以自动获取并设置壁纸了,非常好用。
该批处理的主要功能是通过bing的api获取图片的路径,并把获取到的图片保存在本地的Pictures/BingWallpapers
路径下,最后把图片设置为桌面的背景图片。
@echo off & chcp 65001>nul & setlocal enabledelayedexpansion
echo.&echo 设置Bing每日桌面背景 &echo.
for /f "usebackq delims=" %%P in (`powershell -nologo -noprofile -command "[Environment]::GetFolderPath('MyPictures')"`) do (
set "downloadDir=%%P\BingWallpapers"
)
if not exist "!downloadDir!" mkdir "!downloadDir!"
echo 正在获取图片信息...
set "baseUrl=https://www.bing.com"
set "jsonUrl=!baseUrl!/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN&nc=1614319565639&pid=hp&FORM=BEHPTB&uhd=1&uhdwidth=3840&uhdheight=2160"
for /f "usebackq tokens=1,* delims==" %%A in (`
powershell -nologo -command ^
"$json = Invoke-RestMethod -Uri '!jsonUrl!' -UseBasicParsing;" ^
"$img = $json.images[0];" ^
"Write-Output ('imageUrl=!baseUrl!' + $img.url);" ^
"Write-Output ('imageName=' + $img.enddate + '_'+ $img.title);" ^
`) do (
set "%%A=%%B"
)
set "imageFile=!downloadDir!\!imageName!.jpg"
if not exist !imageFile! (
echo 正在下载图片:!imageName!.jpg
if defined imageUrl (
curl.exe --retry 2 --max-time 30 -so "!imageFile!" "!imageUrl!"
)
)
if exist "!imageFile!" (
echo 正在设置桌面背景...
powershell -Command "Add-Type -TypeDefinition 'using System.Runtime.InteropServices; public class Wallpaper { [DllImport(\"user32.dll\", CharSet=CharSet.Auto)] public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni); }'; [void][Wallpaper]::SystemParametersInfo(20, 0, '!imageFile!', 3)"
echo 桌面背景已更新为: !imageFile!
) else (
echo 未能下载或找到图片文件
)
timeout /t 10
上面的批处理脚本只能在我们手动点击的时候才会去获取新的图片,还是比较麻烦,那有没有办法让每天都让电脑自动获取图片并设置背景呢?
有的~ 有的~ 兄弟,我们可以借助windows的任务计划程序来实现。
任务计划程序,也称计划任务。这是Microsoft Windows中的一个组件,可以预先计划在特定时间或指定时间后启动程序或脚本。
change_desktop_background.vbs
前面的批处理还有一个问题,每次运行的时候都会弹出一个黑窗口,很影响我们的日常工作,我们可以创建一个vbs脚本来隐藏运行刚才的批处理脚本。当然这一步不是必须的,仅仅是为了隐藏运行。
把下面的代码保存到change_desktop_background.vbs
文件里面,放在批处理的同级目录下。并运行测试一下是否可以切换桌面背景。
Set fso = CreateObject("Scripting.FileSystemObject")
vbsDir = fso.GetParentFolderName(WScript.ScriptFullName)
Set ws = CreateObject("WScript.Shell")
ws.CurrentDirectory = vbsDir
ws.Run """change_desktop_background.bat""", 0
下面就开始创建任务计划程序了。
win
+r
输入taskschd.msc
打开任务计划程序
。- 在右侧的任务计划程序库下面点击
创建任务...
常规
的名称
栏位 写Bing每日图片
,或者你喜欢的名字触发器
点击新建
,我这里设置的是在登录电脑后延迟1分钟,并且每12小时执行一次。可以根据自己的情况进行设置,小时不能选,但是可以手动修改。
-
在
操作
里面新建
选启动程序
,程序或脚本选
我们创建的vbs文件。
-
确定后可以选中我们创建好的任务点击右侧的运行检验一下是否可以正常运行。
至此我们电脑就可以每天设置新的背景图片啦~~~