日期:2014-05-18 浏览次数:20857 次
private void process() { // 这里假设d:/test/目录下只有一级文件夹,即,D:/test/下只有1,2,3,4,5,6 之类的文件,而1下面再也没有文件夹了。而这些1,2,3文件夹下的文件名,只有a.txt,b.txt,c.txt..... var files = Directory.GetFiles( @"D:/test/" ); Regex reg = new Regex( @"(D:/test/)([^/]*)/([^.]*\.txt)", RegexOptions.IgnoreCase ); if ( files != null ) { int fileCount = 0; // 文件总数 int errCount = 0; //错误总数 foreach ( var file in files ) { var m = reg.Match( file ); if ( m.Success ) { fileCount++; if ( getDirName( m.Groups[3].Value ) == m.Groups[2].Value ) { // 移到正确的位置 File.Move( file, m.Groups[1].Value + getDirName( m.Groups[3].Value ) + m.Groups[3].Value ); } else errCount++; } } } // 总数:fileCount; // 错误:errCount; // 错误率:errCount/(fileCount * 1.0) } /// <summary> /// 判断该文件应该放在什么文件夹下(也就是对应规则设置的地方了,假设文件名是A.txt,B.txt等等) /// </summary> /// <param name="fileName"></param> /// <returns></returns> private string getDirName( string fileName ) { /// 即,表示,如果文件名第一个符是A。则返回应该存放的文件夹名应该是 1,如果是Z的话,则返回26 return Convert.ToInt32( fileName[0] - 'A' + 1 ).ToString(); //// 或者 //switch ( fileName ) //{ // case "A.txt": return "1"; // case "B.txt": return "2"; // default: return ""; //} }