Windows PowellShell脚本:定时下载文件
很多人都觉得linux wget下载文件很方便,其实windows下也有类似的功能,而且可以更强大。
默认情况下,.PS1 文件在资源管理器中的图标是文本文件的图标,默认打开程序是记事本,这点就很不像 .BAT、.CMD、.VBS 等文件了,这主要是考虑到安全因素。实际上 WinPS 是默认不运行脚本的。
运行命令 Get-ExecutionPolicy 后可以查看当前的脚本运行策略,默认是 Restricted,也就是禁止所有脚本运行,可以用 Set-ExecutionPolicy 来修改策略,参数有 Unrestricted, RemoteSigned, AllSigned, Restricted, Default。其中 Default 和 Restricted 等价;Unrestricted 是最不安全的策略,允许所有脚本运行;RemoteSigned 说明非本地的脚本必须签名才可以运行,本地脚本可以运行;AllSigned 说明所有脚本都必须签名才可以运行。
为了能运行 .PS1 文件,就修改一下脚本运行策略吧:
在powershell控制台执行Set-ExecutionPolicy Unrestricted
新建一个PS1文件例如DownloadM3U8 .ps1,右键打开方式选择windows->system32->windows power shell ->1.0->powershell.exe 始终用这个打开勾上
新建一个目录c:\TopVideo用于保存下载后的文件
脚本内容:
//新建一个数组
$wc=New-Object System.Net.WebClient[] 5
//循环初始化
for($counter = 0; $counter -le 4; $counter++)
{
$wc[$counter]=New-Object System.Net.WebClient
}
//新建参数index并初始化为1
$index = 1
//循环10次下载
for($counter = 1; $counter -le 10; $counter++)
{
//数组内每个成员下载一个地址
foreach($wc1 in $wc)
{
$wc1.DownloadFile("http://t.live.cntv.cn/m3u8/cctv-"+$index+".m3u8","c:\topvideo\cctv-"+$index+"_"+$counter+".m3u8")
$index++
}
$index=1
//休眠5秒
Start-Sleep 5
//打印当前时间
Get-Date
}
//等待回车退出
Read-Host "Wait"