Getting Around Windows 7 "Destination Path Too Long" Error When Deleting Files

Years ago when I started learning VBA for Excel, I was reading a book by John Walkenbach and he compared learning macros in Excel to using a remote control - once you learn it you don't know how you lived without it. I would say that is true of scripting in general.

The bad news is that programming is also like using a credit card, inasmuch as you can get yourself into a depth of problem just not possible without it.

I got experience with that first hand recently when one small programming mistake caused a bit of a disaster on my computer.

My plan was that I would write some automated tests to test a vanilla installation of the Neptune framework. As part of this, I back up my CustomTags folder by renaming it "CustomTag_BAK" - easy enough.

Unfortunately, I made a mistake while making some changes that caused it to copy "CustomTags/_BAK". Worse yet, I did this using a recursive bit of code (if programming is dangerous, recursion is doubly so). The effect of which was several levels deep of "_BAK" folders in my CustomTags folder.

Actually, "several" doesn't cut it. It was thousands of levels deep. I'm not sure how many as Windows seemed to stop counting. This seemed an easy problem to solve, however. I just highlighted the folder on clicked delete.

"Destination Path Too Long"

The problem is that Windows cannot delete a file whose path is longer than 256 characters long. It will let you create files with paths longer than this, but not delete them.

So, how to fix it? Well, I found a page by Microsoft that suggested some solutions (which I'll simplify a bit).

Rename the folder names

This is a nice idea, but as I have more than 256 folders, it really won't help.

Manually move the file to another folder

This is a good solution if the problem is that the folder is just a little bit too long. The problem is that if the folder you move is still too long then you still can't delete it.

So, in my case, I would have to find the deepest folder and start from there. Several minutes of clicking to get there showed me that I was no closer to it then when I started.

Create a virtual drive

This would work well if my folder depth totaled less than 256 X 26 characters long (that is the character limit times the number of letters in the alphabet and thereby the number of virtual drives I could create). Again, my problem was much worse than this.

At this point, I have to admit that I was feeling a little concerned. Here I start to consider just dumping my computer and restoring from back-up. Unfortunately, due to not noticing the problem quickly enough this will mean that I either restore from a back-up that has the problem I am trying to fix or from one that is missing some of what I need (or go through a painful process of cherry-picking files).

Nope, there has to be a better way.

Fortunately there is (or this would be a depressing blog entry).

Move the files with a Script

Someone (I can't find who anymore, sorry) wrote a nice .bat file that (with a little bit of editing) solved by problem. They named the file "recupera.bat", so I kept that name.

recupera.bat:

ren c:\ColdFusion9\CustomTags\_BAK\_BAK x

move c:\ColdFusion9\CustomTags\_BAK\_BAK\x c:\ColdFusion9\CustomTags\_BAK

rd c:\ColdFusion9\CustomTags\_BAK\_BAK

ren c:\ColdFusion9\CustomTags\_BAK\x _BAK

repucera.bat

So, what does this do?

ren c:\ColdFusion9\CustomTags\_BAK\_BAK x

This takes "c:\ColdFusion9\CustomTags\_BAK\_BAK" and renames it to "c:\ColdFusion9\CustomTags\_BAK\x". Apparently Windows has no problem renaming paths even if the result is a path that is too long for it to work with.

move c:\ColdFusion9\CustomTags\_BAK\_BAK\x c:\ColdFusion9\CustomTags\_BAK

This moves all of the files from "c:\ColdFusion9\CustomTags\_BAK\_BAK\x" to "c:\ColdFusion9\CustomTags\_BAK". So, now "c:\ColdFusion9\CustomTags\_BAK" has two folders: "x" and "_BAK". The "x" folder still has tons of subfolders, but the "_BAK" folder is empty.

rd c:\ColdFusion9\CustomTags\_BAK\_BAK

This just removes the now empty nested "_BAK" folder.

ren c:\ColdFusion9\CustomTags\_BAK\x _BAK

This renames the "x" folder (which has tons of nested "_BAK" folders) back to "_BAK". Now my situation is the same as when I started except that one folder has been removed.

repucera.bat

This just executes the .bat again - a nice loop. At some point the "ren" line will throw an exception because the "c:\ColdFusion9\CustomTags\_BAK\_BAK" will no longer exist. This will stop the loop. At this point the problem is finally solved.

So, if you ever find yourself in the bind that I created for myself then feel free to take this code and modify it to suit your problem (renaming the path to the location of your problem).

Hopefully I will never need this again.

Comments
Hi,

This problem is no longer a considered a hassle because it has been solved.

There is away to fix this problem and the name of that software is LONG PATH TOOL.

I highly recommend it to you since I have already used it.

check it out: http://longpathtool.com
# Posted By Cristopher Neil | 3/12/12 9:19 PM
Yeah, I saw that tool when I was searching for a solution. I just don't like installing extra software on my computer that isn't needed (limited trust, I suppose).

In this case, the solution was simple enough that installing software wasn't necessary.
# Posted By Steve Bryant | 3/13/12 8:57 AM
I like this trick. This trick is good for users who love to play with technical ways. However, I have used “Long Path Tool” in this situation and it helped me easily and quickly. So this tool is best for those members who don't love to play with technical skills.
# Posted By Ethangreg | 3/15/12 2:15 PM
The Long Path Tool is advertised as freeware but you actually need to buy a license to get it to work.
# Posted By David Schulberg | 8/13/12 3:39 AM
I tried this, but I get access denied on the very first iteration. :-( Any other suggesions would be greatly appreciated.
# Posted By KT | 8/24/12 8:13 PM
PS - I own the machine and all the subdirectories and I am local admin on this machine, as well.
# Posted By KT | 8/24/12 8:14 PM
KT,

It has been a while since I did this, but you may have to right-click on command prompt and select "Run as administrator" in order for the commands executed from there to have permissions to do this.

Window 7 is kind of weird about that kind of stuff.
# Posted By Steve Bryant | 8/24/12 8:56 PM
every thing said by gabriel nar is fake as fake as his website and softs it's just a scam
# Posted By GabrielNar is fake | 9/21/12 3:54 PM
I believe you are right. I have removed all of those posts and marked that domain as spam internally.

Thanks,

Steve
# Posted By Steve Bryant | 9/22/12 12:50 PM
To clear very long name ( with setACL.exe before for rights) use:

robocopy...

robocopy C:\EMPTY_DIRECTORY C:\DIRECTORY_WITH_SUB_OR_FILE_TOO_LONG\...\ /PURGE /W:1 /R:1 /V /S

result a false copy but that clean up all...

enjoy!
# Posted By Fred | 9/25/12 7:56 AM
BlogCFC was created by Raymond Camden. This blog is running version 5.8.001.