c#运行带有参数的cmd并在finish中关闭它

c#运行带有参数的cmd并在finish中关闭它,c#,cmd,C#,Cmd,我尝试使用参数运行cmd,但它不起作用…请参见cmd.exe/?,cmd.exe没有参数dir 正确的语法将是cmd.exe/c dir。此外,命令行键中还有额外的空间:“/s”而不是“/s”,依此类推: System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnosti

我尝试使用参数运行cmd,但它不起作用…

请参见
cmd.exe/?
cmd.exe
没有参数
dir

正确的语法将是
cmd.exe/c dir
。此外,命令行键中还有额外的空间:“/s”而不是“/s”,依此类推:

System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.FileName = "cmd.exe";
        startInfo.WorkingDirectory = @"C:\";
        startInfo.Arguments = "dir / s / b / o:n / A:D";
        process.StartInfo = startInfo;
        process.Start();

请参见
cmd.exe/?
cmd.exe
没有参数
dir

正确的语法将是
cmd.exe/c dir
。此外,命令行键中还有额外的空间:“/s”而不是“/s”,依此类推:

System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.FileName = "cmd.exe";
        startInfo.WorkingDirectory = @"C:\";
        startInfo.Arguments = "dir / s / b / o:n / A:D";
        process.StartInfo = startInfo;
        process.Start();

删除
/
和字母之间的
空格,如下所示:

    startInfo.FileName = "cmd.exe";
    startInfo.Arguments = "/c dir /s /b /o:n /A:D";

要等待进程结束,请使用
process.WaitForExit()

删除
/
和字母之间的
空格,如下所示:

    startInfo.FileName = "cmd.exe";
    startInfo.Arguments = "/c dir /s /b /o:n /A:D";


要等待进程结束,请使用
process.WaitForExit()

哪个部分不工作?我想你应该把参数改为“dir/s/b/o:n/A:D”(删除空格“/s”->“/s”等等)为什么在
/
和开关之间有空格?你不只是使用
目录。枚举目录(@“c:\”,“****”)有什么特别的原因吗,SearchOption.AllDirectories)
?执行一个外部进程来获取可以由.Net内置类轻松提供的数据似乎很愚蠢。哪个部分不起作用?我想你应该把参数改为“dir/s/b/o:n/A:D”(删除空格“/s”->“/s”等等)为什么在
/
和开关之间有空格?你不只是使用
目录。枚举目录(@“c:\”,“****”)有什么特别的原因吗,SearchOption.AllDirectories)
?执行一个外部过程来获取可以很容易由内置在.NET中的类提供的数据似乎是愚蠢的。“CMD.EXE DIR”将永远不会退出,考虑使用“CMD.EXE/C DIR”@ EnkRoopor您是完全正确的。我编辑了我的答案。谢谢你的建议。“CMD EXE DIR”永远不会退出,考虑使用“CMD.EXE/C DIR”@ EnkRukor你是完全正确的。我编辑了我的答案。谢谢你的建议。你知道如何获取文件名吗?解析
dir
输出通常是个坏主意。考虑使用<代码>目录.GETFILSESH()>代码>。我发现:DR/S/B/O:N< <代码> /A:D/<代码>参数只获取目录名,所以我不认为<代码>目录> GETFILSES()/Cyto>将返回那些目录。代码>目录.GETDirectOrthes()/Case>这里需要(虽然我更喜欢<代码>目录>枚举AddioToReTo())/>代码> @ CysDunWay.作者要求“文件名”具体地。您知道如何获得文件名吗?解析<代码> dir < /代码>输出通常是个坏主意。请考虑使用<代码>目录> GETFILE()
。我发现它:dir/s/b/o:n
/A:D
参数只获取目录名,所以我认为
directory.GetFiles()
不会返回这些名称。
directory.GetDirectories()
在这里是必需的(尽管我更喜欢
directory.EnumerateDirectories()
@ChrisDunaway作者特别要求“文件名”)