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 回答