0

在 vb.net 2008 中,我想执行驻留在另一台计算机上的批处理文件。没有错误,但没有任何反应。这是代码:

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()
4

3 回答 3

1

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

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

参数列表中的“/c”告诉 cmd.exe 在批处理文件完成后退出。

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

于 2009-05-21T18:17:41.500 回答
1

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

您可以使用正确的参数调用它并拥有所需的权限,就像您在示例代码中所做的那样。

于 2009-05-21T20:10:02.867 回答
0

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

此外,我们真的不知道批处理文件中可能导致问题的内容。我会发布批处理文件,或者如果您无法发布批处理文件,请使用您可以发布的批处理文件。例如,批处理文件会将当前日期时间写入文件。

于 2009-05-21T19:53:23.180 回答