1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| void Director(string dir) { DirectoryInfo fdir = new DirectoryInfo(dir); FileSystemInfo[] fsinfos = null; try { fsinfos = fdir.GetFileSystemInfos(); } catch { try { fdir = new DirectoryInfo("\\\\?\\" + dir); fsinfos = fdir.GetFileSystemInfos(); } catch { _syncContext.Post(OutLog, "Error(" + dir + ")"); return; } }
foreach (FileSystemInfo fsinfo in fsinfos) { if ((fsinfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden && (fsinfo.Attributes & FileAttributes.System) == FileAttributes.System) { continue; }
if (fsinfo is DirectoryInfo) Director(fsinfo.FullName); rename(fsinfo); }
}
public void rename(FileSystemInfo fsinfo) { string oldName = fsinfo is DirectoryInfo ? fsinfo.Name : Path.GetFileNameWithoutExtension(fsinfo.FullName);
string newName = Regex.Replace(oldName, "\\p{C}", ""); newName = Regex.Replace(newName, @"(\ud83c[\udf00-\udfff])|(\ud83d[\udc00-\ude4f\ude80-\udeff])|[\u2600-\u2B55]", ""); newName = newName.Replace("\\", "\"); newName = newName.Replace("/", "/"); newName = newName.Replace(":", ":"); newName = newName.Replace("*", "*"); newName = newName.Replace("!", "!"); newName = newName.Replace("?", "?"); newName = newName.Replace("<", "〈"); newName = newName.Replace(">", "〉"); newName = newName.Replace("+", "+"); newName = newName.Replace("-", "-"); newName = newName.Replace("#", "#"); newName = newName.Replace("$", "¥"); newName = newName.Replace("%", "%"); newName = newName.Replace("&", "&"); newName = newName.Replace("\"", """); newName = newName.Replace("'", "'"); newName = newName.Replace("(", "("); newName = newName.Replace(")", ")"); newName = newName.Replace(".", "."); newName = Regex.Replace(newName, @"\s", " "); newName = newName.Trim();
if (!newName.Equals(oldName)) {
try { if (fsinfo is DirectoryInfo) Directory.Move(fsinfo.FullName, Path.GetDirectoryName(fsinfo.FullName) + "\\" + newName); else File.Move(fsinfo.FullName, Path.GetDirectoryName(fsinfo.FullName) + "\\" + newName + Path.GetExtension(fsinfo.FullName)); _syncContext.Post(OutError, "(" + oldName + ") -> (" + newName + ")"); } catch { try { if (fsinfo is DirectoryInfo) Directory.Move("\\\\?\\" + fsinfo.FullName, "\\\\?\\" + Path.GetDirectoryName(fsinfo.FullName) + "\\" + newName); else File.Move("\\\\?\\" + fsinfo.FullName, "\\\\?\\" + Path.GetDirectoryName(fsinfo.FullName) + "\\" + newName + Path.GetExtension(fsinfo.FullName)); } catch { _syncContext.Post(OutLog, fsinfo.FullName + " ERROR(" + oldName + ") -> (" + newName + ")"); } } errName++; } }
|