web-dev-qa-db-ja.com

C#コンソールアプリケーションでCMDコマンドを実行するにはどうすればよいですか?

Windowsのcmdにmysqldumpを作成するのは非常に簡単です。

cmdを開き、mysqldump uroot ppasswordデータベース> c:/data.sqlと入力します

これにより、目的のデータベースのSQLダンプファイルが生成されます。

次のコマンドを実行できるように、コンソールアプリケーションを作成しています。

-uroot -ppass databse  > location\data.sql

私は役に立たないように次のコードを試しました:

System.Diagnostics.ProcessStartInfo procStartInfo =
    new System.Diagnostics.ProcessStartInfo("cmd", "/c " + cmd); 

cmdプロセスを開始してコマンドを正常に送信するにはどうすればよいですか?

14

Mysqldumpを直接呼び出さない理由はありますか?

ProcessStartInfo procStartInfo = 
    new ProcessStartInfo("mysqldump", "uroot ppassword databse > c:/data.sql");

is理由がある場合、コードは次のようになります。

ProcessStartInfo procStartInfo = 
    new ProcessStartInfo("cmd", 
        "/c \"mysqldump uroot ppassword databse > c:/data.sql\"");

変更:

  • cmd変数に "mysqldump"がない場合。
  • コマンドラインで実行するコマンドを引用符で囲む必要があります。
6
Daniel Hilgarth
Process cmd = new Process();

cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;

cmd.Start();

/* execute "dir" */

cmd.StandardInput.WriteLine("dir");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
34
Silx

作成したProcessStartInfoインスタンスでProcess.Start(psi)を実行しますか?

とにかく、次の作業を行う必要があります。

string commandToExecute = @"c:\windows\system32\calc.exe";
Process.Start(@"cmd", @"/c " + commandToExecute);

3
Igor S.
1
Wessel T.