2014-09-26 54 views
0

我使用Robocopy命令的Robocopy已損毀試圖刪除很長(超過1000個)的子文件夾WINDOWS

robocopy empty_dir super_subfoldered_folder /s /mir 
rmdir empty_dir 
rmdir super_subfoldered_folder 

立刻刪除該文件夾,但該命令時robocopy.exe停止工作。 我試圖從主文件夾中至少有50個子文件夾仍然崩潰的路徑中刪除。

我已經嘗試將它們重命名爲「1」,但Windows並不讓我超過100多個文件夾,並且至少有1000多個文件夾。試圖創建新的分區 - subst j:。重命名一些文件夾並刪除分區,但這是永久的,因爲它們的數量。 試過dir /xdel縮短的名稱 - >不工作。

是否有另一種方法來刪除這些文件夾?

+0

將文件夾儘可能深入地更名爲「1」後,將最深的「1」文件夾移動到驅動器的根目錄。必要時重複。如果可能的話,編寫程序,否則你會進行大量的輸入。 – 2014-09-28 00:42:01

回答

1

Windows中的文件路徑在到達實際的文件系統驅動程序之前經過幾個層。結果有兩個限制。 1)由頂層API 2)引入的MAX_PATH(260)限制32)文件系統實際使用的32K。既然你已經有了這條路,那顯然是在文件系統的限制之內。通過在前面添加「\\?\」來嘗試使用路徑。這表明Win32 API不應解析字符串,而是直接將其傳遞到文件系統(http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx)。這隻有在進行調用的過程是Unicode和64位(在64位系統上)時纔有效。否則,字符串必須轉換和/或編組,並且您已回到260限制。

+0

好吧,忘了提。由於您將路徑直接傳遞給文件系統驅動程序,因此不存在路徑操作。沒有當前目錄,沒有「。」文件夾等。您必須通過完整的路徑。 – JurekM 2014-09-27 19:18:13

+0

剛剛嘗試了MOVE命令。它接受這個語法。我能夠使用MOVE \\?\ C:\ complete \ directory \ path ...移動子樹... C:\ Temp – JurekM 2014-09-27 19:20:11

+0

Robocopy會自動將它的路徑轉換爲\\?\ format。 – 2014-09-28 00:40:16

0

Windows有一個subdirectory depth limit,它不是很深。

通過在cd或USB上啓動Live Linux distro(如Ubuntu)並使用GUI文件管理器刪除樹,可能會獲得更好的結果。