# Windows – Fix a file/directory that says “refers to a location that is unavailable” / “file not found” when trying to open it

file managementwindows 7

I've got a bunch of folders that upon trying to browse into them, say "<directory> refers to a location that is unavailable". In Process Monitor, I see that the actual error code is NAME_NOT_FOUND — but they are present.

• chkdsk finds no errors in the filesystem.
• Neither are they junctions or symbolic links (checked by installing the Link Shell Extension)

I've noticed that the names have a common trait:

• they all have a dot at the end
• in the past, I experienced the same with file/directories with broken names like in the picture:

What's happening here and how do I fix this?

How to delete a file ending in a dot in Windows 7? offers ways to delete it, but that's not acceptable 'cuz I need the contents.

• Unlike del suggested in that question, rename "<directory>" "<smth else>" produces the same "File not found".
• Neither \\?\<path> works (same error).

Windows API "preprocesses" paths before passing them to the kernel. The documentation on this is sketchy: instead, MSDN lists just the net limitations. In particular:

Do not end a file or directory name with a space or a period. Although the underlying file system may support such names, the Windows shell and user interface does not.

The Unicode I/O APIs that lift the MAX_PATH limitation seem to skip that preprocessing as well.

So, there are two ways of fixing:

• Use a program that uses the Unicode I/O API under the hood. Options include:

• Use the 8.3 name to access the file/dir:

>dir /x
<...>
<DIR>          58B0~1       Для П.П.

>rename 58B0~1 new_name


Using the "native path" -- \\?\<full path> -- doesn't help here because for some cmd builtins -- at least, dir and rename -- these paths are still subject for the preprocessing:

>dir "\\?\C:\Users\Me\Для П.П."
<...>
Directory of \\?\C:\Users\Me\Для П.П