Windows 中实现合并多个文件内容到一个文件中
copy *.sql MERGE.sql
Linux 或 类Unix 下实现合并多个文件内容到一个文件中
cat b1.sql b2.sql b3.sql > b_all.sql
或者
cat *.sql > merge.sql
在程序中使用CMD合并Csv,在执行WaitForExit(等待程序执行完)方法时断点就没了,一直没有回应
@BlueWhale`: 先写个bat 或者sh的批处理脚本,单独运行看行吗,之后再用WaitForExit这个程序中调用,如果出现问题,一般是执行的路径有问题【Process执行工作路径设置到bat的地方或者使用绝对路径】
@2012: 在CMD中可以,在程序中接收CMD返回结果时无反应
@2012: 贴上代码,您看下哪里有问题吗
1 public static void MergeCsv(string path) 2 { 3 try 4 { 5 //根据path,将path下Csv格式文件按名字分组合并 6 //比如名字包含X1,X2,合并结果为X1-AllData.csv,X2-AllData.csv 7 //但是数据量很大,有几千列几千行 8 System.Diagnostics.Process p = new System.Diagnostics.Process(); 9 p.StartInfo.FileName = "cmd.exe"; 10 p.StartInfo.UseShellExecute = false;//是否使用操作系统shell启动 11 p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息 12 p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息 13 p.StartInfo.RedirectStandardError = true;//重定向标准错误输出 14 p.StartInfo.CreateNoWindow = false;//不显示程序窗口 15 p.Start();//启动程序 16 p.StandardInput.WriteLine("E:"); 17 p.StandardInput.WriteLine("cd "+path); 18 19 20 System.IO.DirectoryInfo dir = new DirectoryInfo(path); 21 FileInfo[] fiList = dir.GetFiles(); 22 //获得给定路径下X1,X2,X3,X4.。。 23 string[] PathArr = fiList.Select(x => x.Name.Split('_')[3]).Distinct().ToArray(); 24 string cmd = "E:&" + path + "&"; 25 string month = path.Split('\\')[3]; 26 string day = path.Split('\\')[4]; 27 foreach (var item in PathArr) 28 { 29 p.StandardInput.WriteLine("copy *" + item + "*.csv " + month + "-" + day + item + "-Data .csv");; 30 } 31 32 p.StandardInput.AutoFlush = true; 33 string str = p.StandardOutput.ReadToEnd(); 34 p.WaitForExit(); //等待程序执行完 35 p.Close(); //退出进程 36 } 37 catch (Exception e) 38 { 39 throw e; 40 } 41 42 43 44 45 }
CSV不就是文本吗?用FileStream对象处理一下就可以了