ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Это ВОПРОС КОДА, а НЕ УПРАВЛЕНИЕ СИСТЕМОЙ.Мне было интересно, как, если кто-нибудь знает, как переименовать имена папок с помощью RegEx?По сути, мне нужно избавиться от ~ ”#% & *: <>?/ \ {|} в любых именах папок.Мне было интересно, как это сделать, так как я думаю, что мне нужно начать с «снизу вверх» (имеется в виду последняя возможная папка развертки и начать переименовывать папки с самого низкого уровня до самого высокого).
У кого-нибудь есть идеи?
Итак, у меня есть следующий код:
public partial class CleanPathResults : Form
{
public CleanPathResults()
{
InitializeComponent();
}
public void Sanitizer(List<string> dirtyPaths)
{
string regPattern = (@"[~#&!%+{}]+");
string replacement = " ";
Regex regExPattern = new Regex(regPattern);
Regex regExPattern2 = new Regex(@"\s{2,}");
StreamWriter errors = new StreamWriter(@"S:\test\Errors.txt", true);
var dirCount = new Dictionary<string, int>();
dataGridView1.Rows.Clear();
try
{
foreach (string invalidPaths in dirtyPaths)
{
string sanitizedPath = regExPattern.Replace(invalidPaths, replacement);
sanitizedPath = regExPattern2.Replace(sanitizedPath, replacement);
DataGridViewRow clean = new DataGridViewRow();
clean.CreateCells(dataGridView1);
clean.Cells[0].Value = invalidPaths;
clean.Cells[1].Value = sanitizedPath;
dataGridView1.Rows.Add(clean);
System.IO.Directory.Move(invalidPaths, sanitizedPath);
}
}
catch (Exception e)
{
throw;
//errors.Write(e);
}
}
Самая большая проблема, с которой я здесь сталкиваюсь, заключается в том, что эти пути необходимо переименовать из папки самого низкого уровня впапка самого высокого уровня, или я буду продолжать получать ошибки во время отладки.
Мой вопрос: как развернуть диск, перейти в папку LOWEST в древовидной структуре, переименовать папки вверх?Возьмите, например, путь: G: \ Test ~ \ Это всего лишь% a Test \ test & test \ testing !! \ ## test.txt
Как я мог бы переименовать это и начать с тестирования!!папку и работать так, чтобы я не получил никаких ошибок?