7

次のコードを使用して、C#を使用してコマンドプロンプトウィンドウを正常に開きました。

    Process p = new Process();
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.WorkingDirectory = @"d:\pdf2xml";
    p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardInput = true;


    p.Start();

    p.StandardInput.WriteLine(@"pdftoxml.win32.1.2.7 -annotation "+filename);

    p.StandardInput.WriteLine(@"cd D:\python-source\ds-xmlStudio-1.0-py27");

    p.StandardInput.WriteLine(@"main.py -i example-8.xml -o outp.xml");

    p.WaitForExit();

しかし、私はディレクトリを変更するコマンドも渡しました。

問題:

  1. ディレクトリの場所を変更する方法は?
  2. Cmdプロンプトは、開いた後は常に表示されます...

それらの問題から抜け出すために私を導いてください...

4

3 に答える 3

16

スタートアップディレクトリを変更するには、p.StartInfo.WorkingDirectoryを目的のディレクトリに設定することで変更できます。ディレクトリが変更されない理由は、引数がであるため/c d:\testです。代わりに試してください/c cd d:\test

 Process p = new Process();
 p.StartInfo.FileName = "cmd.exe";
 p.StartInfo.WorkingDirectory = @"C:\";
 p.StartInfo.UseShellExecute = false;
 ...
 p.Start();

p.StartInfo.WindowStyleをHiddenに設定して、そのウィンドウが表示されないようにすると、コマンドプロンプトを非表示にできます。

 p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.windowstyle.aspx

于 2012-04-19T05:14:55.603 に答える
11

p.StandardInput.WriteLineを使用して、コマンドをcmdウィンドウに送信できます。このためには、p.StartInfo.RedirectStandardOutputをtureに設定するだけです。以下のように

        Process p = new Process();
        p.StartInfo.FileName = "cmd.exe";
        //p.StartInfo.Arguments = @"/c D:\\pdf2xml";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardInput = true;
        p.Start();

        p.StandardInput.WriteLine(@"cd D:\pdf2xml");
        p.StandardInput.WriteLine("d:");
于 2012-04-19T05:29:28.833 に答える
3

System.IO.Directory.SetCurrentDirectory代わりに使用してください

これをチェックすることもできます

そしてこの投稿

processStartInfo .WorkingDirectory = @"c:\";
于 2012-04-19T05:14:15.940 に答える