web-dev-qa-db-ja.com

コードからCMDコマンドを実行する

C#WPF:CMDコマンドを実行したいのですが、cmdコマンドをプログラムで正確に実行するにはどうすればよいですか?

29
Jake

以下に簡単な例を示します。

Process.Start("cmd","/C copy c:\\file.txt lpt1");
37
Andreas Grech

他の回答で述べたように、次を使用できます。

  Process.Start("notepad somefile.txt");

ただし、別の方法があります。

Processオブジェクトをインスタンス化し、インスタンスの開始メソッドを呼び出すことができます。

  Process process = new Process();
  process.StartInfo.FileName = "notepad.exe";
  process.StartInfo.WorkingDirectory = "c:\temp";
  process.StartInfo.Arguments = "somefile.txt";
  process.Start();

この方法で行うと、プロセスを開始する前に、より多くのオプションを構成できます。また、Processオブジェクトを使用すると、実行中のプロセスに関する情報を取得でき、プロセスが終了すると(Exitedイベントを介して)通知を受け取ります。

追加:「Exited」イベントをフックする場合は、「process.EnableRaisingEvents」を「true」に設定することを忘れないでください。

22
Ashley Davis

cmdでアプリケーションを起動する場合は、次のコードを使用します。

string YourApplicationPath = "C:\\Program Files\\App\\MyApp.exe"   
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.WindowStyle = ProcessWindowStyle.Hidden;
processInfo.FileName = "cmd.exe";
processInfo.WorkingDirectory = Path.GetDirectoryName(YourApplicationPath);
processInfo.Arguments = "/c START " + Path.GetFileName(YourApplicationPath);
Process.Start(processInfo);
10
Zviadi

Process.Start を使用:

using System.Diagnostics;

class Program
{
    static void Main()
    {
        Process.Start("example.txt");
    }
}
10
Mitch Wheat

必要なコマンドを使用してバッチファイルを作成し、Process.Startを使用して呼び出します。

dir.batコンテンツ:

dir

次に呼び出します:

Process.Start("dir.bat");

Batファイルを呼び出して、dirを実行します

5
Carlo

これを使用して、cmd in C#を使用できます。

ProcessStartInfo proStart = new ProcessStartInfo();
Process pro = new Process();
proStart.FileName = "cmd.exe";
proStart.WorkingDirectory = @"D:\...";
string arg = "/c your_argument";
proStart.Arguments = arg;
proStart.WindowStyle = ProcessWindowStyle.Hidden;
pro.StartInfo = pro;
pro.Start();

引数の前に/ cを書くことを忘れないでください!!

3
mfatihk

Argh:Dは最速ではない

Process.Start("notepad C:\test.txt");
2
Acron

コマンドウィンドウを表示する方法を尋ねていますか?その場合、 Process object ...を使用できます.

Process.Start("cmd");
1
JP Alioto

上記の答えに加えて、小さな拡張メソッドを使用できます。

public static class Extensions
{
   public static void Run(this string fileName, 
                          string workingDir=null, params string[] arguments)
    {
        using (var p = new Process())
        {
            var args = p.StartInfo;
            args.FileName = fileName;
            if (workingDir!=null) args.WorkingDirectory = workingDir;
            if (arguments != null && arguments.Any())
                args.Arguments = string.Join(" ", arguments).Trim();
            else if (fileName.ToLowerInvariant() == "Explorer")
                args.Arguments = args.WorkingDirectory;
            p.Start();
        }
    }
}

そして次のように使用します:

// open Explorer window with given path
"Explorer".Run(path);   

// open a Shell (remanins open)
"cmd".Run(path, "/K");
0
Matt