Question

En vb.net 2008 Je veux exécuter un fichier batch qui se trouve sur un autre ordinateur. Il n'y a pas d'erreur, mais rien ne se passe. Voici le code:

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()
Était-ce utile?

La solution

Pour exécuter un processus sur un ordinateur distant, vous pouvez utiliser Sysinternals gratuitement psexec .

Vous pouvez l'appeler avec les paramètres appropriés et ayant les autorisations requises comme vous faites dans votre exemple de code.

Autres conseils

Je ne l'ai jamais essayé de créer un procédé utilisant un fichier batch comme l'exécutable. J'ai toujours eu à utiliser cmd.exe comme le programme. Cela a fonctionné pour moi dans le passé:

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

Le « / c » dans le cadre de la liste des arguments indique cmd.exe pour sortir après le fichier de commandes est terminée.

Si vous allez utiliser RedirectStandardOutput, vous ne voulez vraiment utiliser RedirectStandardError, puis abonnez également aux événements de la classe de processus pour la capture des données sur les cours d'eau (OutputDataReceived et ErrorDataReceived). Sinon, vous aurez aucun moyen de déboguer votre script batch.

se lit comme un problème d'autorisations. Je résoudre cette façon si vous ne l'avez pas encore l'écartaient.
Avez-vous essayé de courir le même fichier de commandes de l'ordinateur local?
S'il est un problème d'autorisations, vous pouvez le résoudre copiant le fichier localement avant de l'exécuter ou mappez un lecteur à l'ordinateur distant où le fichier est puis exécutez le fichier de commandes à partir du nouveau chemin.

De plus, nous ne savons pas vraiment ce qui est dans le fichier batch qui pourrait être la cause d'un problème. Je soit poster le fichier de commandes ou si vous ne pouvez pas afficher le fichier batch utiliser un fichier batch que vous pouvez poster. Exemple d'un fichier batch écrirait la date heure actuelle dans un fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top