2009-05-21 85 views
0

在vb.net 2008我想执行驻留在另一台计算机上的批处理文件。 没有错误,但没有任何反应。 下面是代码:如何使用VB.NET在另一台计算机上执行批处理文件?

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

发布您的代码无法使用的代码。 – 2009-05-21 16:49:30

+1

您还应该考虑发布批处理文件。 – 2009-05-21 16:57:24

+1

请修改您的帖子并回答以下问题。该批次有什么作用?你怎么知道它不工作?如果从本地驱动器运行批处理,批处理是否会执行? – 2009-05-21 17:02:05

回答

1

要在远程计算机上运行进程,您可以使用Sysinternals免费psexec

您可以使用适当的参数调用它,并拥有您在示例代码中所需的权限。

1

我从来没有尝试创建使用批处理文件作为可执行的过程。我一直不得不使用cmd.exe作为程序。这为我工作在过去的:

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

的“/ C”作为参数列表的部分告诉cmd.exe的批处理文件完成后退出。

如果您打算使用RedirectStandardOutput,您确实需要使用RedirectStandardError,然后还订阅Process类的事件以捕获这些流上的数据(OutputDataReceived和ErrorDataReceived)。否则,您将无法调试批处理脚本。

0

这听起来像一个权限问题。如果你还没有排除它,我会以这种方式排除故障。
您是否尝试过从本地计算机运行相同的批处理文件?
如果这是一个权限问题,您可以解决它,或者在执行它之前在本地复制文件,或将驱动器映射到文件所在的远程计算机,然后从新路径执行批处理文件。

此外,我们并不真正知道批处理文件中可能导致问题的内容。我要么发布批处理文件,要么不能发布批处理文件,请使用可发布的批处理文件。例如,批处理文件会将当前日期时间写入文件。

相关问题