【问题标题】:Is it possible to make a VB program interact with a command prompt?是否可以使 VB 程序与命令提示符交互?
【发布时间】:2016-04-02 22:18:45
【问题描述】:

我正在学习 Java,我发现你必须使用命令提示符来编译和运行你的程序很烦人......所以我在想:有没有办法在 Visual Basic 中制作一个可以打开的程序up命令提示符并输入代码?

【问题讨论】:

  • 是的,我想否则使用会非常少。我认为你应该更具体地编辑你的问题。
  • 或者..您可以使用 Java IDE(集成开发环境)。 VB 开发在 Visual Studio IDE 中完成,无需使用命令行即​​可处理所有“编译和运行”内容。
  • 我看到您的第一个编辑添加了您正在使用 Java,但您的问题标题仍然指的是 VB,并且您的标签指的是 VBA VB.Net。我建议您将您的问题重新定义为“如何自动编译和运行 Java 程序?”
  • 记事本和记事本++哦,那些日子。 其中只有一个 IDE...

标签: vb.net process automation batch-processing javac


【解决方案1】:

您可以使用 Process 类。

Using p As New Process

    p.StartInfo.FileName = Path.Combine(Environment.SystemDirectory, "CMD.exe")
    p.StartInfo.Arguments = String.Format("/C ""{0}"" ", "Dir /B /S /A-D ""*""")
    p.StartInfo.WorkingDirectory = Environment.SystemDirectory

    p.Start()
    p.WaitForExit()

End Using

但是不需要调用CMD,直接调用Java编译器即可,方法同上例。或者你也可以考虑直接用Java开发你的程序,并使用Java编译器的相关接口。

【讨论】:

    【解决方案2】:

    使用此代码运行您需要在命令提示符下运行的批处理命令。

    Dim commands As Object() = New Object() {"echo Command One", "echo Command Two", "..."}
    Dim startInfo As ProcessStartInfo = New ProcessStartInfo(Path.Combine(Environment.SystemDirectory, "cmd.exe"))
    startInfo.WindowStyle = ProcessWindowStyle.Normal
    startInfo.Arguments = "/c """
    For Each obj As Object In commands
        startInfo.Arguments += obj.ToString + " & "
    Next
    startInfo.Arguments = startInfo.Arguments.Substring(0, startInfo.Arguments.LastIndexOf(" & "))
    startInfo.Arguments += """"
    Process.Start(startInfo)
    

    或者只是使用此代码在命令提示符中更简洁地运行命令。

    Shell("cmd /c ""echo Command One & Command Two & ...""")
    

    【讨论】:

      【解决方案3】:

      简而言之,是的。你可以shell命令提示符。

      Sub Foo()
      
          Dim cmd_Command As String = "DIR %USERPROFILE%/Desktop/*.* > %USERPROFILE%/Files.log"
      
          CreateObject("WScript.Shell").Exec("CMD /C " & cmd_Command)
      
      End Sub
      

      【讨论】:

      • 我使用了那个代码,cmd打开和关闭的速度非常快
      • 此代码散布了不良做法。 1、创建COM对象的实例时,工作完成后用FinalReleaseComObject方法释放它,并设置为Nothingnul 在 C# 中)。 2. 没有必要将 COM 互操作视为一种解决方案,因为 .Net Framework 类库公开了托管代码来做同样的事情。
      • 我知道 .net 中与 COM 的交易;问题只是问“是否有办法......” 通用问题=通用答案,这不是作为完成的代码推送。
      猜你喜欢
      • 2013-06-16
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多