3

Firefox を開いて Web サイトを実行し、Firefox を再度閉じるバッチ ファイルを作成することはできますか?

何かのようなもの:

@echo off
start firefox http://.....

これが私が立ち往生している場所です... Webサイトの読み込みが完了したら、firefixを再度閉じる必要があります。

毎晩 23:59 にメンテナンス スクリプトを実行するために使用されます。スクリプトはローカルに基づいていますが、サーバーを使用しないと asp ファイルを実行できないため、Web サイトとして配置しました。

4

2 に答える 2

6

数年前に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 のような動作に適応させることに伴う複雑さを防ぐことができます。

于 2012-04-30T12:08:30.770 に答える
4

既に存在する Web サイトのページを呼び出すだけの場合は、次の方法で簡単に実行できます。

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 経由のアクセスのみを受け入れるようにスクリプトをロックすることをお勧めします。

編集:明確にするために。

于 2012-05-01T09:18:53.323 に答える