windows通过批处理让电脑每天自动设置bing桌面背景

概要

bing搜索的背景图片每天都会进行自动更新,而且质量都非常的不错,而获取图片的api也是可以在网上找到的。

{
  "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

下面就开始创建任务计划程序了。

  1. win + r输入taskschd.msc打开任务计划程序
  2. 在右侧的任务计划程序库下面点击创建任务...
  3. 常规名称栏位 写Bing每日图片,或者你喜欢的名字
  4. 触发器点击新建,我这里设置的是在登录电脑后延迟1分钟,并且每12小时执行一次。可以根据自己的情况进行设置,小时不能选,但是可以手动修改。

  1. 操作里面新建启动程序程序或脚本选我们创建的vbs文件。

  2. 确定后可以选中我们创建好的任务点击右侧的运行检验一下是否可以正常运行。

至此我们电脑就可以每天设置新的背景图片啦~~~

posted @ 2025-06-11 10:25  雨中遐想  阅读(240)  评论(0)    收藏  举报