在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()
答案 0 :(得分:1)
我从未尝试使用批处理文件作为可执行文件创建Process。我一直不得不使用cmd.exe作为程序。这在过去对我有用:
Dim startInfo As New System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " & serverpath & "\file.bat")
作为参数列表一部分的“/ c”告诉cmd.exe在批处理文件完成后退出。
如果您打算使用RedirectStandardOutput,您确实想要使用RedirectStandardError,然后还订阅Process类的事件以捕获这些流上的数据(OutputDataReceived和ErrorDataReceived)。否则,您将无法调试批处理脚本。
答案 1 :(得分:1)
要在远程计算机上运行进程,您可以免费使用Sysinternals psexec。
您可以使用正确的参数调用它,并具有所需的权限,就像您在示例代码中所做的那样。
答案 2 :(得分:0)
这就像权限问题一样。如果你还没有排除它,我会以这种方式排除故障。
您是否尝试过从本地计算机运行相同的批处理文件?
如果是权限问题,您可以在执行文件之前在本地复制文件或将驱动器映射到文件所在的远程计算机,然后从新路径执行批处理文件。
此外,我们并不真正知道批处理文件中可能导致问题的原因。我要发布批处理文件,或者如果你不能发布批处理文件,请使用你可以发布的批处理文件。批处理文件的示例会将当前日期时间写入文件。