通过Windows上的计划任务加载URL的推荐方法

Cor*_*use 57 .net windows internet-explorer scheduling scheduled-tasks

我有一个托管在Windows机器上的网页,我需要确保每天至少加载一次.我目前的计划是创建一个打开Internet Explorer并点击URL的计划任务:

"C:\Program Files\Internet Explorer\iexplore.exe" myurl.com/script_to_run_daily.aspx
Run Code Online (Sandbox Code Playgroud)

这很简单,设置和工作正常,但它让我感到非常黑客,因为Internet Explorer实际上必须打开并点击此URL.我不需要从此页面返回任何输入,它只是在文件被点击时将缓存数据存储在文件中.

这样做有一种更明智的方式吗?万一重要,这是一个VB.net网站.

提前致谢!

Nik*_*bas 115

正如Remus Rusanu所指出的,PowerShell将是最佳选择.这是一个简单的单行程序,您可以使用它创建计划任务,而无需编写单独的.ps1文件:

powershell -ExecutionPolicy Bypass -Command
    Invoke-WebRequest 'http://localhost/cron.aspx' -UseBasicParsing
Run Code Online (Sandbox Code Playgroud)

请注意,为了清楚起见,在所有这些命令行中添加了换行符.在尝试运行命令之前删除它们.

您可以像这样创建计划任务:(从提升的命令提示符运行)

schtasks /create /tn "MyAppDailyUpdate"
    /tr "powershell -ExecutionPolicy Bypass -Command
        Invoke-WebRequest 'http://localhost/cron.aspx' -UseBasicParsing"
    /sc DAILY /ru System
Run Code Online (Sandbox Code Playgroud)

以上内容适用于PowerShell 3+.如果你需要适用于旧版本的东西,这里是单行:

powershell -ExecutionPolicy unrestricted -Command
    "(New-Object Net.WebClient).DownloadString(\"http://localhost/cron.aspx\")"
Run Code Online (Sandbox Code Playgroud)

您可以像这样创建计划任务:(从提升的命令提示符)

schtasks /create /tn "MyAppDailyUpdate"
    /tr "powershell -ExecutionPolicy unrestricted -Command
        \"(New-Object Net.WebClient).DownloadString(\\\"http://localhost/cron.aspx\\\")\""
    /sc DAILY /ru System
Run Code Online (Sandbox Code Playgroud)

这些schtasks示例将任务设置为每天运行 - 请参阅schtasks文档以获取更多选项.

  • 这适用于我,单引号,没有更改为&符号:powershell -ExecutionPolicy unrestricted -Command"(New-Object Net.WebClient).DownloadString('http://localhost/cron.aspx?var1 = cat&var2 = dog')" (5认同)

Rem*_*anu 41

您可以安排PowerShell脚本.PS功能非常强大,可让您访问整个.Net Framework,以及更改.这是一个例子:

$request = [System.Net.WebRequest]::Create("http://www.example.com")
$response = $request.GetResponse()
$response.Close()
Run Code Online (Sandbox Code Playgroud)


Ric*_*kNZ 18

另一种选择是VB Script.例如(另存为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..."
Run Code Online (Sandbox Code Playgroud)


Joh*_*ika 11

从PowerShell 5.0开始,curl它是别名Invoke-WebRequest,因此您可以按如下方式创建计划任务:

Action: Start a program
Program/script: powershell
Add arguments: curl http://www.example.com/foo/bar
Run Code Online (Sandbox Code Playgroud)

您也可以使用Invoke-WebRequest,但curl更简洁.


Tod*_*odd 8

这个SuperUser.com的答案要简单得多.

cmd /c start http://example.com/somePage.html
Run Code Online (Sandbox Code Playgroud)

更具体地说,这是它在Windows计划任务中的外观:

在此输入图像描述

虽然,这可能会在后台运行默认配置的浏览器.如果它必须是IE,那么应该配置它.这可能是最好的选择.有一个直接作为任务的Action步骤运行的解决方案是很好的.所有信息都在那里.如果它简洁,那就更好了,所以你可以看到大部分命令而无需滚动文本框.

WGET/CURL - 很好的选择

如果有的话,WGET将是一个很好的选择cmd..start..url.我不是第一个想到这一点的人.缺点是你必须下载WGET for Windows才能工作 - 它不是一个开箱即用的解决方案.但WGET更轻,重要的是给你更多的力量.您可以发送许多其他类型的URL调用.这包括不同的HTTP方法,如POST,自定义标头等.Curl是一个不错的选择,而不是Wget - 它们具有不同的功能集,许多重叠.

PowerShell - 不推荐

PowerShell,可能被认为是一个"更轻"的选项,但你也加载了一个有一点滞后的PowerShell(.Net AppDomain),而且命令也要长得多,因此如果你是更难记住经常这样做.所以PowerShell不是最好的选择.

VBScript - 不推荐

显然,VBScript不太值得推荐.你还需要记住更多,脚本非常大.除非您有其他保证脚本的步骤,否则不要使用完全独立的资源来执行您可以直接在计划任务中完成的操作.

另外,请看类似的问题:


Jac*_*son 5

Windows版本中最​​常见的命令行http请求工具,例如cURLwget.您当然可以创建一个运行其中一个的计划任务.我还在Windows Scripting Host脚本中完成了此操作,如果您需要动态循环或创建URL参数,或者其他一些.