2011-12-13 169 views
1

如何重命名其下有多個文件夾和文件的目錄? Directory.Move()保持拋出錯誤,我讀了你不能在非空目錄上使用它。使用子文件夾和文件重命名目錄

+1

什麼錯誤?這裏沒有太多可以繼續。 –

+1

你在哪裏讀過它不能用於非空目錄?你在處理異常嗎?如果是這樣,什麼是例外? –

+1

正如其他人所說你需要添加更多信息,文檔中沒有任何內容(http://msdn.microsoft.com/en-us/library/system.io.directory.move.aspx),它說它可以'不能用於非空目錄,但可以引發大量記錄的錯誤,例如試圖將目錄移動到已存在的路徑。更詳細的人可以給你一個有用的答案 – RobV

回答

3

你總是可以執行REN命令行方式:

REN Dir1 Dir2 

您也可以嘗試:

System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Server.MapPath("Dir1")); 
di.MoveTo(Server.MapPath("Dir2")); 

下面是使用REN方法的粗略C#版本:

 ProcessStartInfo startInfo = new ProcessStartInfo(); 
     startInfo.UseShellExecute = false; 
     startInfo.RedirectStandardInput = true; 
     startInfo.RedirectStandardOutput = true; 

     startInfo.FileName = "cmd.exe"; 
     startInfo.WorkingDirectory = "D:\\Temp"; 
     Process oProcess = Process.Start(startInfo); 

     oProcess.StandardInput.WriteLine(@"Echo on"); 
     oProcess.StandardInput.WriteLine(@"ren ~test2 ~test1"); 
     oProcess.StandardInput.WriteLine(@"EXIT"); 
     string output = oProcess.StandardOutput.ReadToEnd(); 

     oProcess.WaitForExit(); 

     Console.Write(output); 

     oProcess.Close(); 
+0

對不起,但這必須從C#代碼完成。 –

+0

@TravisJ:更新了使用ren方法的C#機制。 –

+0

非常感謝,使用DirectoryInfo和MapPath一起工作的建議非常好,我很感謝幫助! –