批处理之家's Archiver

WHY 发表于 2017-12-26 16:38

PowerShell 下载 BING 主页图片并设置为壁纸

脚本实现功能:利用 Windows 任务计划,实现每天下载一次 BING 主页图片,并设置为桌面壁纸。
脚本运行方法:右键单击 BingPicture.bat,选择“以管理员身份运行”

以下脚本保存为 BingPicture.ps1[code]#获取图片下载地址
function GetPictureURL(){
    $url = 'http://www.bing.com/HPImageArchive.aspx?idx=0&n=1';
    $web = New-Object System.Net.WebClient;
    $web.Encoding = [Text.Encoding]::UTF8;

    [xml]$xml = $web.DownloadString($url);
    $pictureURL = ($xml|Select-XML '//url').Node.InnerText -replace '\d+x\d+', '1920x1080';
    return 'https://cn.bing.com' + $pictureURL;
}

#下载图片
function SavePictureFile($pictureURL, $pictureDir){
    $pictureFile = $pictureDir + ($pictureURL -replace '.+/', '\\');
    $web = New-Object System.Net.WebClient;
    $web.DownloadFile($pictureURL, $pictureFile);
    return $pictureFile
}

#将图片设置为桌面壁纸
function SetWallpaper($pictureFile){
    $shell = New-Object -Com Shell.Application;
    $null  = $pictureFile -match '(.+)\\([^\\]+)$';
    $verbs = $shell.NameSpace($matches[1]).ParseName($matches[2]).Verbs();
    $verbs | ?{$_.Name -like '设置为桌面背景*'} | %{ $_.DoIt();}
}

$path = $MyInvocation.MyCommand.Path -replace '[^\\]+$'; #脚本所在路径
$pictureDir = $path + 'Bing';                            #图片文件夹
If (!(Test-Path $pictureDir)) { $null = New-Item $pictureDir -ItemType Directory; }

$pictureFile = SavePictureFile (GetPictureURL) $pictureDir;
SetWallpaper $pictureFile[/code]以下脚本保存为 BingPicture.bat,保存位置:与 BingPicture.ps1 同目录。[code]@echo off
Rem 删除名称为 Bing 的任务计划(如果有)
schtasks /delete /tn Bing /f 2>nul

Rem 创建名称为 Bing 的任务计划,每天08:30运行Powershell脚本(用户密码如果为空,删除/rp * 即可)
schtasks /create /ru %userName% /rp * /tn Bing /tr "PowerShell -w minimized -c \"Set-ExecutionPolicy -Scope Process Bypass -Force;^&\\\"%~dp0bingPicture.ps1\\\"\"" /sc Daily /st 08:30

pause[/code]如何取消任务计划?注释掉 BingPicture.bat 第6行,然后再次以管理员身份运行  BingPicture.bat

yhcfsr 发表于 2017-12-26 16:59

占楼,感谢分享。这就去实验一翻

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.