问题是不言自明的.如果代码长一行(与Process.Start("...")"?"有关)会很棒.我研究了网络,但只找到了旧的例子和那些不起作用的例子(至少对我而言).我想在我的类库中使用它来运行Git命令(如果这有帮助吗?).
Ste*_*eve 20
你可以试试这个方法:
Public Class MyUtilities
Shared Sub RunCommandCom(command as String, arguments as String, permanent as Boolean)
Dim p as Process = new Process()
Dim pi as ProcessStartInfo = new ProcessStartInfo()
pi.Arguments = " " + if(permanent = true, "/K" , "/C") + " " + command + " " + arguments
pi.FileName = "cmd.exe"
p.StartInfo = pi
p.Start()
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
以这种方式打电话:
MyUtilities.RunCommandCom("DIR", "/W", true)
Run Code Online (Sandbox Code Playgroud)
编辑:对于一行上的多个命令,键是&| &&和|| 命令连接器
小智 13
您可以尝试此运行命令然后cmd退出
Process.Start("cmd", "/c YourCode")
Run Code Online (Sandbox Code Playgroud)
你可以尝试这个运行命令,cmd等待更多的命令
Process.Start("cmd", "/k YourCode")
Run Code Online (Sandbox Code Playgroud)
我的灵感来自史蒂夫的回答,但我想我会为它添加一点闪光。我喜欢在编写扩展方法之前先做这些工作,所以以后调用方法的工作就少了。
例如,使用下面史蒂夫回答的修改版本,而不是拨打这个电话......
MyUtilities.RunCommandCom("DIR", "/W", true)
我实际上可以输入命令并像这样从我的字符串中调用它......
直接在代码中。
Call "CD %APPDATA% & TREE".RunCMD()
或者
从一个变量。
Dim MyCommand = "CD %APPDATA% & TREE"
MyCommand.RunCMD()
Run Code Online (Sandbox Code Playgroud)
或者
从文本框。
textbox.text.RunCMD(WaitForProcessComplete:=True)
扩展方法需要放置在公共模块中,并<Extension>在子模块上携带属性。您还需要添加Imports System.Runtime.CompilerServices到代码文件的顶部。
如果您需要进一步的帮助,有很多关于扩展方法的信息。
扩展方法
Public Module Extensions
''' <summary>
''' Extension method to run string as CMD command.
''' </summary>
''' <param name="command">[String] Command to run.</param>
''' <param name="ShowWindow">[Boolean](Default:False) Option to show CMD window.</param>
''' <param name="WaitForProcessComplete">[Boolean](Default:False) Option to wait for CMD process to complete before exiting sub.</param>
''' <param name="permanent">[Boolean](Default:False) Option to keep window visible after command has finished. Ignored if ShowWindow is False.</param>
<Extension>
Public Sub RunCMD(command As String, Optional ShowWindow As Boolean = False, Optional WaitForProcessComplete As Boolean = False, Optional permanent As Boolean = False)
Dim p As Process = New Process()
Dim pi As ProcessStartInfo = New ProcessStartInfo()
pi.Arguments = " " + If(ShowWindow AndAlso permanent, "/K", "/C") + " " + command
pi.FileName = "cmd.exe"
pi.CreateNoWindow = Not ShowWindow
If ShowWindow Then
pi.WindowStyle = ProcessWindowStyle.Normal
Else
pi.WindowStyle = ProcessWindowStyle.Hidden
End If
p.StartInfo = pi
p.Start()
If WaitForProcessComplete Then Do Until p.HasExited : Loop
End Sub
End Module
Run Code Online (Sandbox Code Playgroud)