I had a “fun” time today with some directories that I could not delete. These were mandatory roaming profiles that I previously had attempted to upload to a file server using “robocopy”. Owing to switches that I used when performing the upload, directory junctions were treated as files, and robocopy got caught in a recursive loop because of a circular reference to “Application Data”. By the time I caught the problem, I had created a set of nested “Application Data” directories that must have been over 400 characters long.
All of the tricks I had used in the past to delete “deep” directories were failing me. “Dir /s /q [dirName]” failed with “Access Denied”, even though I was the directory owner. Running the command as System encountered the same problem. I mapped a drive to the directory, as deep down in the nested folders as I could get. From there, I was able to “CD” to the deepest “Application Data” directory, but I still could not delete the directory. (I got a “directory not empty” error.)
Eventually, Google unveiled a suggestion to use “robocopy” to mirror an empty directory to the problematic directory. (Unfortunately, I have lost track of the link, so I cannot give credit where it is due.) “Good idea,” I thought. Why not use the utility that created the problem to solve the problem? After all, if robocopy can create paths that are 400 characters long, perhaps it can delete them, too.
To test, I simply created an empty directory “E:\foo”, and ran the command:
robocopy.exe /mir /e E:\foo E:\mandatory\corruptProfile
Robocopy quickly chewed though the problematic profile, and a few seconds later I had an empty directory that I was able to delete. Hurray!