在Windows上通过计划任务加载URL的推荐方法
我有一个Windows窗口托pipe的网页,我需要保证至less每天加载一次。 我目前的计划是创build一个计划任务,打开Internet Explorer并点击URL:
"C:\Program Files\Internet Explorer\iexplore.exe" myurl.com/script_to_run_daily.aspx
这很容易设置和正常工作,但它作为一个黑客攻击我,因为Internet Explorer实际上必须打开并打这个URL。 我不需要从这个页面返回任何input,它只是简单地将caching的数据存储在文件中。
有没有一个这样做的一个狡猾的方式? 万一它很重要,这是一个VB.net网站。
提前致谢!
正如Remus Rusanu所指出的那样,PowerShell将会是一个很好的select。 下面是一个简单的单行程序,您可以使用它来创build计划任务,而无需编写单独的.ps1文件:
powershell -ExecutionPolicy unrestricted -Command "(New-Object Net.WebClient) .DownloadString(\"http://localhost/cron.aspx\")"
您可以像这样创build计划任务:
schtasks /create /tn "MyAppDailyUpdate" /tr "powershell -ExecutionPolicy unrestricted -Command \"(New-Object Net.WebClient) .DownloadString(\\\"http://localhost/cron.aspx\\\")\"" /sc DAILY /ru System
本示例将设置每天运行的任务 – 请参阅schtasks.exe文档以获取更多选项。
您可以安排一个PowerShell脚本。 PS是相当强大的,让您访问整个.Net框架,再加上改变。 这里是一个例子:
$request = [System.Net.WebRequest]::Create("http://www.example.com") $response = $request.GetResponse() $response.Close()
另一种select是VB脚本。 例如(另存为file.vbs):
sSrcUrl = "http://yourdomain.com/yourfile.aspx" sDestFolder = "C:\yourfolder\" sImageFile = "filename.txt" set oHTTP = WScript.CreateObject("MSXML2.ServerXMLHTTP") oHTTP.open "GET", sSrcUrl, False oHTTP.send "" set oStream = createobject("adodb.stream") Const adTypeBinary = 1 Const adSaveCreateOverWrite = 2 oStream.type = adTypeBinary oStream.open oStream.write oHTTP.responseBody oStream.savetofile sDestFolder & sImageFile, adSaveCreateOverWrite set oStream = nothing set oHTTP = nothing WScript.Echo "Done..."
从PowerShell 5.0开始, curl
是Invoke-WebRequest
的别名,因此您可以创build一个计划任务,如下所示:
Action: Start a program Program/script: powershell Add arguments: curl http://www.example.com/foo/bar
你也可以使用Invoke-WebRequest
,但是curl
更简洁。
最常见的命令行http请求工具有Windows版本,如cURL和wget 。 你当然可以创build一个计划任务,运行其中的一个。 如果您需要循环或创buildURL参数,还可以在Windows脚本宿主脚本中完成此操作。
这个SuperUser.com的答案要简单得多。
cmd /c start http://example.com/somePage.html
更具体地说,这是它在Windows计划任务中的外观:
尽pipe这可能会在后台运行默认的configuration浏览器。 如果它必须是IE,那么应该configuration。 这可能是最好的select。 有一个直接作为Task的Action步骤的解决scheme是很好的。 所有的信息就在那里。 更好的是,如果它是简洁的,所以你可以看到大部分的命令,而不用滚动文本框。
WGET / CURL – 很好的select
如果有的话,WGET将是cmd..start..url
一个很好的select。 我不是第一个想到这个的 。 缺点是您必须下载WGET for Windows才能正常工作 – 这不是一个开箱即用的解决scheme。 但是,WGET更轻,重要的是给你更多的权力 。 您可以发送很多其他types的URL调用。 这包括不同的HTTP方法,如POST,自定义头等等。 curl是一个很好的select,而不是Wget – 它们具有不同的特征集合,许多重叠。
PowerShell – 不推荐
PowerShell可能被认为是一个“更轻”的选项,但是你也加载了一个稍微滞后的PowerShell(.Net AppDomain),而且命令时间更长,因此难以记住经常这样做。 所以PowerShell不是最好的select。
VBScript – 不推荐
显然,VBScript不太值得推荐。 你有更多的东西需要记住,而且脚本非常大。 除非您有其他步骤保证脚本,否则不要有完全独立的资源来执行您可以直接在计划任务中完成的任务。
另外,看到类似的问题: