使用Windows SORT命令进行就地排序

时间:2012-07-31 16:17:42

标签: c# sorting cmd dos

我正在使用Window 7的SORT命令来排序.csv文件,当我将结果输出到单独的csv文件时,该命令工作正常但我需要进行就地排序。

代码如下。

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo= new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = "/C sort C:\\Users\\fFayyaz\\Desktop\\12.csv > C:\\Users\\fFayyaz\\Desktop\\12.csv";

        process.StartInfo = startInfo;
        process.Start();

以上代码清空整个源文件。如果我做/ C排序文件名,它不会对文件进行排序。但是如果源和目的地不同,那么上面的代码就可以完美地工作。有人可以帮助进行内部排序。

2 个答案:

答案 0 :(得分:0)

您无法进行现场排序。您可以通过重命名文件来模拟效果,以便在临时文件中排序,然后启动命令将重命名的文件转换为旧文件名。添加圆顶事务性以检查是否存在某些错误,使用原始名称复制旧文件。

注意:我们不能进行就地排序,源文件是空的,因为命令在写入之前清除输出文件,并且输出和输入文件相同,它会丢失数据

答案 1 :(得分:0)

从中获得的结论是,Windows的排序是不可能的。但它是,考虑到它使用临时文件设计。所以澄清一下: 排序/? reveal / O选项指定输出文件 - 只需使用与输入相同的内容即可进行排序。