Я изучаю Java, и я нахожу это раздражающим, что вам нужно использовать командную строку для компиляции и запуска ваших программ ... Поэтому я подумал: есть ли способ сделать программы на Visual Basic, которые откроются командной строки и введите код?Возможно ли, чтобы программа VB взаимодействовала с командной строкой?
ответ
Короче говоря, да. Вы можете просто скопировать командную строку.
Sub Foo()
Dim cmd_Command As String = "DIR %USERPROFILE%/Desktop/*.* > %USERPROFILE%/Files.log"
CreateObject("WScript.Shell").Exec("CMD /C " & cmd_Command)
End Sub
Я использовал этот код, и cmd открывается и закрывается очень быстро – Eddie
Этот код отличается от плохой практики. 1. При создании экземпляра COM-объекта вы должны освободить его после завершения работы с ** методом FinalReleaseComObject **, а также установить для него ** Nothing ** (** nul ** на C#). 2. Нет необходимости рассматривать COM-взаимодействие как решение, потому что библиотека классов .Net Framework предоставляет управляемому коду то же самое. – ElektroStudios
Я знаю о сделках с COM в .net; Вопрос просто спросил «если был способ ...». Общий вопрос = общий ответ, это не толкали как готовый код. –
Вы можете использовать класс 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 directlly, таким же образом, как в примере выше. Кроме того, вы можете рассмотреть возможность разработки вашей программы напрямую в Java и использовать связанный с ним интерфейс компилятора Java.
Используйте этот код для запуска партии команд, которые необходимо запустить в командной строке.
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 & ...""")
Да, я предполагаю, что в противном случае было бы очень мало использования. Я думаю, вы должны отредактировать свой вопрос более конкретно. – newguy
Или вы могли бы использовать Java IDE (Integrated Development Environment). Разработка VB выполняется в среде Visual Studio IDE, которая обрабатывает все «компилировать и запускать» без необходимости использования командной строки. – user2864740
Я вижу, что ваше первое редактирование добавляет, что вы используете Java, но название вопроса по-прежнему относится к VB, а ваши теги относятся к VBA * и * VB.Net. Я предлагаю вам пересмотреть свой вопрос как нечто вроде «Как я могу автоматически компилировать и запускать Java-программу?» – ThunderFrame