是否可以创建一个打开 firefox、运行网站然后再次关闭 firefox 的批处理文件?
就像是:
@echo off
start firefox http://.....
这就是我卡住的地方......当网站完成加载时,它需要再次关闭firefix。
它用于每晚 23:59 运行维护脚本。该脚本基于本地,但不使用服务器就无法运行 asp 文件,因此我将其作为网站放置。
是否可以创建一个打开 firefox、运行网站然后再次关闭 firefox 的批处理文件?
就像是:
@echo off
start firefox http://.....
这就是我卡住的地方......当网站完成加载时,它需要再次关闭firefix。
它用于每晚 23:59 运行维护脚本。该脚本基于本地,但不使用服务器就无法运行 asp 文件,因此我将其作为网站放置。
改编自我几年前在 aspfaq.com 上写的一篇文章。
使用 AT 命令和 Windows Scripting Host(或更基本的任务调度程序)以特定间隔调度 VBS 文件。
首先,将 ASP 更改为 VBS 文件。这是通过 (1) 将扩展名更改为 VBS 来实现的;(2) 将所有 Server.CreateObject 调用更改为 CreateObject;(3) 删除所有<%%>
分隔符和任何以浏览器为目标的代码(例如,response.write 语句或客户端 HTML)。我没有遇到任何进一步的并发症,而是 YMMV。
您将 VBS 文件存储在文件系统中,并使用 AT 命令对其进行调度(这实际上是使用 Windows 的调度服务来调度其执行)。在命令提示符下,您可以单独使用 AT 来查看当前计划中的任务列表。你可以使用 AT/? 找出它所有的语法可能性。
例如,要让文件在每个工作日上午 9:00 运行,我启动这个批处理文件(第一行清除现有条目):
at /delete /y
at 9:00 /every:m,t,w,th,f d:\net\shared\getdata.vbs
请注意,不涉及 Web 服务器;该文件是通过文件系统直接访问的。一旦我克服了“用户必须登录”和“重新启动时必须重置任务”的障碍(我认为这两个问题都是我们无法控制的特定机器的问题),一切都在运行对于我来说足够了。
有关使用 WSH、CDONTS 和任务计划程序定期发送电子邮件的示例,请参阅KB #221495。
如果您所做的只是在 SQL Server 中进行数据库工作,那么您可能会考虑使用作业。这将允许您将作业的所有处理保留在您的数据库中,并防止与多个系统、连接和将 ASP 代码调整为非 ASP 行为相关的复杂性。
如果你只想调用一个已经存在的网站上的页面,下面是一个简单的方法来完成它。
Option Explicit
On Error Resume Next
' Declare our vars
Dim objWinHttp, strURL
' Request URL from 1st Command Line Argument. This is
' a nice option so you can use the same file to
' schedule any number of differnet scripts just by
' changing the command line parameter.
'strURL = WScript.Arguments(0)
' Could also hard code if you want:
strURL = "http://www.example.com/myscript.asp"
' For more WinHTTP v5.0 info, including where to get
' the component, see our HTTP sample:
' http://www.asp101.com/samples/winhttp5.asp
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5")
objWinHttp.Open "GET", strURL
objWinHttp.Send
' Get the Status and compare it to the expected 200
' which is the code for a successful HTTP request:
' http://www.asp101.com/resources/httpcodes.asp
If objWinHttp.Status <> 200 Then
' If it's not 200 we throw an error... we'll
' check for it and others later.
Err.Raise 1, "HttpRequester", "Invalid HTTP Response Code"
End If
' Since in this example I could really care less about
' what's returned, I never even check it, but in
' general checking for some expected text or some sort
' of status result from the ASP script would be a good
' idea. Use objWinHttp.ResponseText
Set objWinHttp = Nothing
If Err.Number <> 0 Then
' Something has gone wrong... do whatever is
' appropriate for your given situation... I'm
' emailing someone:
Dim objMessage
Set objMessage = Server.CreateObject("CDO.Message")
objMessage.To = "you@example.com"
objMessage.From = "cron job <cron@example.com>"
objMessage.Subject = "An Error Has Occurred in a " _
& "Scheduled Task"
objMessage.TextBody = "Error #: " & Err.Number & vbCrLf _
& "From: " & Err.Source & vbCrLf _
& "Desc: " & Err.Description & vbCrLf _
& "Time: " & Now()
objMessage.Send
Set objMessage = Nothing
End If
更改strURL
为您的脚本或取消注释该行strURL = WScript.Arguments(0)
并将 url 作为参数传递。将其放入带有cscript.exe
.
这就是我执行所有基于 ASP 的计划任务的方式,因此我可以更轻松地进行测试,您可能希望将脚本锁定为仅接受通过服务器 IP 进行的访问,以确保它不会被机器人调用。
编辑:为清楚起见。