【问题标题】:How can I use VB.NET to execute a batch file on another computer?如何使用 VB.NET 在另一台计算机上执行批处理文件?
【发布时间】:2010-10-27 23:45:30
【问题描述】:

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

【问题讨论】:

  • 发布你有的代码不起作用。
  • 您还应该考虑发布批处理文件。
  • 请编辑您的帖子并回答以下问题。批处理有什么作用?你怎么知道它不起作用?如果从本地驱动器运行批处理,它会执行吗?
  • 批处理文件运行一个 .exe 文件。我知道它不起作用,因为 .exe 没有被执行。本地化它的工作原理。
  • 您是否尝试在远程计算机上运行 exe 文件?还是只是尝试在本地运行远程文件?

标签: vb.net batch-file remote-execution


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 我证明了尼尔,但它仍然在本地运行 .exe 文件,而不是像我想要的那样在远程模式下运行。还有其他建议吗?
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      相关资源
      最近更新 更多