VB.NETからDOS / CMD /コマンドプロンプトコマンドを実行するにはどうすればよいですか?



How Run Dos Cmd Command Prompt Commands From Vb



解決:

この方法を試すことができます:

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')+ '' +コマンド+ '' +引数pi.FileName = 'cmd.exe' p.StartInfo = pi p.Start()End Sub End Class

たとえば、次のように呼び出します。



MyUtilities.RunCommandCom( 'DIR'、 '/ W'、true)

編集: 1行の複数コマンドの場合、キーは&|です。 &&および||コマンドコネクタ

  • A&B →コマンドAを実行してから、コマンドBを実行してください。
  • A | NS →コマンドAを実行し、出力をすべてコマンドBの入力にリダイレクトします。
  • A && B →コマンドAを実行し、コマンドA実行後にエラーレベルを評価し、終了コード(エラーレベル)が0の場合のみ、コマンドBを実行します。
  • A || NS →コマンドAを実行し、このコマンドの終了コードを評価し、0以外の場合は、コマンドBを実行します。

これを試してコマンドを実行してからcmd終了



Process.Start( 'cmd'、 '/ c YourCode')

これを試してコマンドを実行し、cmd他のコマンドを待つ

Process.Start( 'cmd'、 '/ k YourCode') 

私はスティーブの答えに触発されましたが、それに少しフレアを加えたいと思いました。拡張メソッドを作成する前に作業を行うのが好きなので、後でメソッドを呼び出す作業が少なくなります。

たとえば、この電話をかける代わりに、以下のスティーブの答えの修正版で...



MyUtilities.RunCommandCom( 'DIR'、 '/ W'、true)

私は実際にコマンドを入力して、このように文字列から呼び出すことができます...

コードで直接。

'CD%APPDATA%&TREE'.RunCMD()を呼び出します

また

変数から。

Dim MyCommand = 'CD%APPDATA%&TREE' MyCommand.RunCMD()

また

テキストボックスから。

textbox.text.RunCMD(WaitForProcessComplete:= True)


拡張メソッドはパブリックモジュールに配置し、サブの属性。また、追加する必要がありますSystem.Runtime.CompilerServicesをコードファイルの先頭にインポートします。

さらにヘルプが必要な場合は、拡張メソッドに関するSOに関する情報がたくさんあります。


拡張方法

パブリックモジュール拡張機能 '' '' ''文字列をCMDコマンドとして実行する拡張メソッド。 '' '' '' [文字列]実行するコマンド。 '' '[ブール値](デフォルト:False)CMDウィンドウを表示するオプション。 '' '[ブール値](デフォルト:False)CMDプロセスが完了するのを待ってからsubを終了するオプション。 '' '[ブール値](デフォルト:False)コマンドの終了後にウィンドウを表示したままにするオプション。 ShowWindowがFalseの場合は無視されます。 Public Sub RunCMD(command As String、オプションのShowWindow As Boolean = False、オプションのWaitForProcessComplete As Boolean = False、オプションのpermanent As Boolean = False)Dim p As Process = New Process()Dim pi As ProcessStartInfo = New ProcessStartInfo()pi.Arguments = '' + If(ShowWindow AndAlsopermanent、 '/ K'、 '/ C')+ '' + command pi.FileName = 'cmd.exe' pi.CreateNoWindow = Not ShowWindow If ShowWindow Then pi.WindowStyle = ProcessWindowStyle.Normalそれ以外の場合pi.WindowStyle = ProcessWindowStyle.Hidden End If p.StartInfo = pi p.Start()If WaitForProcessComplete Then Do until p.HasExited:Loop End Sub End Module