2009-05-21 9 views
0

In vb.net 2008 Ich möchte eine Batch-Datei ausführen, die sich auf einem anderen Computer befindet. Es gibt keinen Fehler, aber nichts passiert. Hier ist der Code:Wie kann ich mit VB.NET eine Batchdatei auf einem anderen Computer ausführen?

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() 
+1

Veröffentlichen Sie den Code, den Sie haben, der nicht funktioniert. –

+1

Sie sollten auch in Betracht ziehen, die Batch-Datei zu posten. –

+1

Bitte bearbeiten Sie Ihren Beitrag und beantworten Sie die folgenden Fragen. Was macht die Charge? Woher weißt du, dass es nicht funktioniert? Wird der Stapel ausgeführt, wenn Sie ihn von einem lokalen Laufwerk ausführen? –

Antwort

1

Um einen Prozess auf einem Remote-Computer auszuführen, können Sie Sysinternals kostenlos psexec verwenden.

Sie können es mit den richtigen Parametern aufrufen und haben die erforderlichen Berechtigungen, wie Sie in Ihrem Beispielcode tun.

+0

danke. Ich benutzte psexec und es läuft jetzt gut. – user109285

1

Ich habe noch nie einen Prozess mit einer Batch-Datei als ausführbare Datei zu erstellen versucht. Ich musste immer cmd.exe als Programm verwenden. Das hat für mich in der Vergangenheit zusammengearbeitet:

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

Die „/ c“ als Teil der Argumentliste sagt cmd.exe zu beenden, nachdem die Batch-Datei abgeschlossen ist.

Wenn Sie RedirectStandardOutput verwenden, möchten Sie wirklich RedirectStandardError verwenden und dann auch die Ereignisse der Process-Klasse zum Abfangen von Daten in diesen Streams abonnieren (OutputDataReceived und ErrorDataReceived). Andernfalls haben Sie keine Möglichkeit, Ihr Stapelscript zu debuggen.

+0

Ich habe es Neil bewiesen, aber es läuft immer noch .exe-Datei lokal und nicht im Remote-Modus wie ich will. irgendeinen anderen Rat? – user109285

0

Das liest sich wie ein Berechtigungsproblem. Ich würde es auf diese Weise beheben, wenn Sie es noch nicht ausgeschlossen haben.
Haben Sie versucht, dieselbe Stapeldatei vom lokalen Computer auszuführen?
Wenn es sich um ein Berechtigungsproblem handelt, können Sie es lösen, indem Sie entweder die Datei lokal kopieren, bevor Sie sie ausführen, oder ein Laufwerk dem Remotecomputer zuordnen, auf dem sich die Datei befindet, und dann die Stapeldatei aus dem neuen Pfad ausführen.

Darüber hinaus wissen wir nicht wirklich, was in der Batch-Datei ist, die ein Problem verursachen könnte. Ich würde entweder die Batch-Datei veröffentlichen oder wenn Sie die Batch-Datei nicht veröffentlichen können, verwenden Sie eine Batch-Datei, die Sie veröffentlichen können. Beispiel: Eine Stapeldatei schreibt die aktuelle Datumszeit in eine Datei.

Verwandte Themen