我有一個大的文件夾和文件目錄,其中包含名稱末尾的空格,我試圖將該空間的目錄重命名爲一個沒有,所以另一個應用程序將能夠訪問它。我不能移動/重命名空間結尾的目錄
我使用C#(但如果有更好的選擇,這將解決這個問題,請建議)這是我的全部代碼:
using System;
using System.IO;
using System.Text.RegularExpressions;
namespace removing_spaces_in_directories_names
{
class Program
{
public static string path = "../../../old_directory";
static void Main(string[] args)
{
DirectoryInfo di = new DirectoryInfo(path);
WalkDirectoryTree(di);
Console.ReadLine();
}
static void WalkDirectoryTree(System.IO.DirectoryInfo root)
{
if (root.Name != "old_directory")
{ renameDirectory(root); }
DirectoryInfo[] diArr = root.GetDirectories();
foreach(DirectoryInfo di in diArr)
{
WalkDirectoryTree(di);
}
}
static void renameDirectory(System.IO.DirectoryInfo dir)
{
Console.WriteLine("renaming: " + dir.FullName);
string newName = ReplaceLastOccurrence(dir.FullName, " ", "");
if (Directory.Exists(dir.FullName) == false)
{
//dir.MoveTo(newName);
String oldName = @"\\?\"+dir.FullName;
Directory.Move(oldName,newName);
}
}
public static string ReplaceLastOccurrence(string Source, string Find, string Replace)
{
int place = Source.LastIndexOf(Find);
if (place == -1)
return Source;
string result = Source.Remove(place, Find.Length).Insert(place, Replace);
return result;
}
}
}
我曾嘗試加入「\ \?」到年初該文件夾的名稱建議here,但這是行不通的,如果我添加它會得到的錯誤是:路徑中的非法字符。
,如果我用dir.MoveTo(newName);
沒有「\ \?」字符,我會得到錯誤的另一方面:找不到路徑「志願者信息」
我怎麼能經歷的一部分這是否根本?也許可以在Linux上運行這個應用程序而不是Windows幫助?
我試過,但現在我得到另一個錯誤: '源和目標路徑必須different.' 如果我試圖完全改變了newName的路徑或名稱,我得到一個錯誤說: '找不到路徑的一部分' –
這可能意味着oldName沒有跟蹤空間 – IsaacBok