Domanda

In vb.net 2008 voglio eseguire un file batch che risiede in un altro computer. Non v'è alcun errore, ma non succede nulla. Ecco il codice:

Dim pStart As New System.Diagnostics.Process
Dim startInfo As New System.Diagnostics.ProcessStartInfo(serverpath & "\file.bat")
startInfo.RedirectStandardOutput = True
startInfo.WindowStyle = ProcessWindowStyle.Hidden
startInfo.UseShellExecute = False
pStart = System.Diagnostics.Process.Start(startInfo)
pStart.WaitForExit()
pStart.Close()
È stato utile?

Soluzione

Per eseguire un processo su un computer remoto è possibile utilizzare Sysinternals psexec .

Si può chiamare con i parametri corretti e avere le autorizzazioni necessarie, come si sta facendo nel codice di esempio.

Altri suggerimenti

Non ho mai cercato di creare un processo utilizzando un file batch come l'eseguibile. Ho sempre dovuto usare cmd.exe come il programma. Questo ha funzionato per me in passato:

Dim startInfo As New System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " & serverpath & "\file.bat")

Il "/ c" come parte della lista degli argomenti dice cmd.exe per uscire dopo che il file batch è stato completato.

Se avete intenzione di usare RedirectStandardOutput, davvero si desidera utilizzare RedirectStandardError, e poi anche sottoscrivere gli eventi della classe Process per la cattura dei dati su quei flussi (OutputDataReceived e ErrorDataReceived). In caso contrario non si avrà alcun modo per eseguire il debug di script batch.

Questa legge come un problema di autorizzazioni. Vorrei risolvere i problemi in questo modo se non l'hai ancora pronunciato fuori.
Hai provato in esecuzione lo stesso file batch dal computer locale?
Se si tratta di un problema di autorizzazioni è possibile risolverlo o copiare il file in locale prima di eseguirlo o mappa un'unità al computer remoto in cui il file è e poi esegue il file batch dal nuovo percorso.

Inoltre, non sappiamo davvero cosa c'è nel file batch che potrebbe causare un problema. Mi sia inviare il file batch o se non è possibile inviare il file batch utilizzare un file batch che è possibile inviare. Esempio di un file batch avrebbe scritto la data e ora corrente in un file.

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