Domanda

Attualmente, WScript visualizza una finestra di messaggio quando si verifica un errore di script.Questi script vengono chiamati da altri processi e vengono eseguiti su un server, quindi non c'è nessuno che possa chiudere la casella di errore.

Quello che vorrei è che il messaggio di errore venga scaricato su STDOUT e l'esecuzione restituisca il processo chiamante.Il fatto di apparire come MSGBox blocca l'intera cosa.

Idee?

È stato utile?

Soluzione

Ecco come dovresti eseguire i lavori batch di script:

cscript //b scriptname.vbs

Altri suggerimenti

Non utilizzare WScript;utilizzare CScript.Al prompt dei comandi di Windows, digitare quanto segue per visualizzare la guida.

cscript //?
Suggerisco quanto segue:
cscript //H:CScript
Ciò renderà CScript il tuo interprete di scripting predefinito.CScript stampa i messaggi sulla console (ad esempio, stdout) come desideri.(Non utilizza finestre di finestra di dialogo.) Potresti anche provare l'interruttore // B, ma non riesco a dire se questo deve essere eseguito per script o meno.Se si tratta di un'opzione persistente e una tantum come lo è l'opzione //H, allora potrebbe funzionare per te;in caso contrario, potrebbe essere necessario modificare tutti i programmi remoti per includerlo.Dalle informazioni che hai fornito, penso che semplicemente cambiando l'interprete predefinito (//H) si farà ciò che desideri.

Sarà inoltre necessario aggiungere una sorta di gestione degli errori per evitare che lo script termini in caso di errore.In Visual Basic Scripting Edition, la cosa più semplice da fare se vuoi semplicemente ignorare gli errori è aggiungere quanto segue all'inizio dello script.

On Error Resume Next
Vedere http://msdn.microsoft.com/en-us/library/53f3k80h(VS.85).aspx per maggiori informazioni.

Utilizza WScript.Echo invece di MsgBox.Ed esegui lo script utilizzando CSCRIPT anziché WSCRIPT.

Non hai indicato quale lingua stai utilizzando.Se stai utilizzando VBScript, puoi scrivere un gestore degli errori utilizzando il file In caso di errore... dichiarazione.Se stai utilizzando JScript, puoi utilizzare a prova a {} catturare (x) {} bloccare.

non farlo:

script vb:In caso di errore riprendere successivamente

inglese:"quando hai un errore, ignoralo e continua ad andare avanti."

Ti suggerisco di inserire il codice dello script in un Sub - ad es. DoWork - e codifica il tuo script in qualcosa del tipo:

On Error Resume Next

DoWork

If Err.Number <> 0 Then

    If "CSCRIPT.EXE" = UCase( Right( WScript.Fullname, 11 ) ) Then
        WScript.StdErr.Write Err.Number & ": " & Err.Description
    Else
        WScript.Echo Err.Number & ": " & Err.Description
    End If
    WScript.Quit 1
End If

Private Sub DoWork

    ... your code ...

End Sub

In questo modo, quando esegui lo script utilizzando cscript //b, e fallisce, riceverai un messaggio di errore in output su stderr e il chiamante riceverà un livello di errore diverso da zero.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top