概要

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. 确定后可以选中我们创建好的任务点击右侧的运行检验一下是否可以正常运行。

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

windows通过批处理让电脑每天自动设置bing桌面背景的更多相关文章

  1. 获取bing图片并自动设置为电脑桌面背景(C++完整开源程序)

    众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找 ...

  2. 【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景

    众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找 ...

  3. 获取bing图片并自动设置为电脑桌面背景(使用 URLDownloadToFile API函数)

    众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找 ...

  4. windows bat批处理基础命令学习教程(转载)

    一.基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令.可以使用任何文本文件编辑工具创建和修改.2.批处理是一种简单的程序,可以用 if 和 goto 来控 ...

  5. Windows常用批处理命令 CMD BAT (CMD目录操作等dir)

    Windows常用批处理 CMD BAT CMD获取文件夹下所有文件的名称并打印(输出)到指定目录 dir C:\Users\\Desktop\png\*.*/s >c:\.txt //cmd ...

  6. 初尝Windows 下批处理编程

    本文叫“ 初尝Windows 下批处理编程”是为了延续上一篇“初尝 Perl”,其实对于博主而言批处理以及批处理编程早就接触过了. 本文包括以下内容 1.什么是批处理 2.常用批处理命令 3.简介批处 ...

  7. windows中实现python,redis服务自动重启(任务计划程序+bat脚本)

    需求:银行电脑无法自动开机,只能 通过 应用相关服务每天自动重启的方式实现 服务更新并且防止服务假死,内存过大 等情况 相关工具:win10系统中,使用windows自带的任务计划程序 和 bat脚本 ...

  8. C#操作电脑多显示器设置

    电脑多显示器设置 第一种方式 通过使用api函数SetDisplayConfig来设置.这种方式在某些电脑中设置有几率会导致电脑黑屏 使用代码如下: private const uint SDC_AP ...

  9. 【转】WPF: 自动设置Owner的ShowDialog 适用于MVVM

    原文地址:http://www.mgenware.com/blog/?p=339 WPF中的Windows的ShowDialog方法并没有提供设置Owner的参数,开发者需要在ShowDialog前设 ...

  10. PowerShell脚本自动设置安卓手机wifi代理

    在实际测试工作中,经常要将安卓手机通过wifi代理的形式连接到本机的fiddler或charles服务器代理进行抓包测试.最近一直在想,有没有什么方法可以自动设置安卓手机的wifi代理,曾经想通过修改 ...

随机推荐

  1. Go语言中的匿名函数和闭包,简单理解

    匿名函数是一种没有函数名的函数,即定义即使用:闭包作为一种携带状态的函数,我们可以简单地将它理解为"对象",因为它同时具备状态和行为. 匿名函数 匿名函数没有函数名,只有函数体,它 ...

  2. Ansible管理密码库文件

    ansible可能需要访问密码或API密钥等敏感数据,以便能配置受管主机.通常,此信息可能以纯文本形式存储在清单变量或其他Ansible文件中.但若如此,任何有权访问Ansible文件的用户或存储,这 ...

  3. Netty源码—2.Reactor线程模型一

    大纲 1.关于NioEventLoop的问题整理 2.理解Reactor线程模型主要分三部分 3.NioEventLoop的创建 4.NioEventLoop的启动 1.关于NioEventLoop的 ...

  4. 裸金属架构之服务器安装VMWare ESXI虚拟化平台详细流程

    目录1. 裸金属架构(Vcent)2. Vcent安装流程2.1 远程控制端(个人电脑)安装VMware-viclien2.2 服务器部署安装VMWare ESXI2.3 VMware-viclien ...

  5. Radmin远程自动登入管理工具

    功能说明: Radmin远程自动登入管理工具,服务器登入密码采用加密方式存储,软件可添加,编辑,删除服务器列表以及扫描服务器是否在线. 连接方式:有完全控制,仅查看,文件传输,关机等功能. 使用说明: ...

  6. 【QT】使用Qxlsx读取Excel单元格中函数表达式的结果值

    [QT]使用Qxlsx读取Excel单元格中函数表达式的结果值 零.起因 是这样的,目前朋友托我写一款模板生成软件,任务是先把他写的程序文件复制一份出来,然后再根据Excel中对应位置的单元格的值,修 ...

  7. CSS实现单行显示文本并适应浏览器大小

    实现 .text {     white-space:nowrap;  /*文本不换行*/     overflow: hidden; /*超出文本隐藏*/     text-overflow:ell ...

  8. vue路由params传参时出现undefined

    1.问题: 使用params方式传参时(参数不显示的方式) 获取参数时,参数undefined 2.解决: push时请使用name,不要使用path(路由的params对象使用,必须通过路由名nam ...

  9. Java 中堆和栈的区别是什么?

    Java 中堆和栈的区别 Java 中的堆(Heap)和栈(Stack)是两种不同的内存区域,它们有着不同的用途和特点.以下是它们的主要区别: 1. 存储内容 堆:用于存储对象实例以及类的实例变量.所 ...

  10. symfony学习笔记3.4(bundle、service、doctrine的使用…)

    yii.laravel框架都是基于symfony组件衍生,symfony的强大不用多说.文档里有的,很好找的就不写了 附: symfony官网  https://symfony.com/doc/3.4 ...