Arregle un archivo / directorio que dice "se refiere a una ubicación que no está disponible" / "archivo no encontrado" al intentar abrirlo

2

Tengo un montón de carpetas que, al intentar buscarlas, digamos "<directory> refers to a location that is unavailable". En Process Monitor , veo que el código de error real es NAME_NOT_FOUND, pero están presentes.

  • chkdsk no encuentra errores en el sistema de archivos.
  • Tampoco son uniones o enlaces simbólicos (verificados mediante la instalación de la Extensión de Shell de Enlace )

Me di cuenta de que los nombres tienen un rasgo común:

  • todos tienen un punto al final
  • en el pasado, experimenté lo mismo con archivos / directorios con nombres rotos como en la imagen:

nombres de carpetas rotos.  fuente: https://answers.microsoft.com/en-us/windows/forum/windows_7-files/fnew-folder-refers-to-a-location-that-is/fd41d220-8183-4e19-9250-356dc1d66656

¿Qué está pasando aquí y cómo soluciono esto?

¿Cómo eliminar un archivo que termina en un punto en Windows 7? ofrece formas de eliminarlo , pero eso no es aceptable porque necesito el contenido.

  • A diferencia de lo delsugerido en esa pregunta, rename "<directory>" "<smth else>"produce lo mismo "File not found".
  • Ninguno de los dos \\?\<path>funciona (mismo error).
ivan_pozdeev
fuente

Respuestas:

2

Las rutas de "preprocesos" de la API de Windows antes de pasarlas al kernel. La documentación sobre esto es incompleta: en cambio, MSDN enumera solo las limitaciones netas. En particular:

No termine el nombre de un archivo o directorio con un espacio o punto. Aunque el sistema de archivos subyacente puede admitir dichos nombres, el shell de Windows y la interfaz de usuario no lo hacen.

Las API de E / S Unicode que eliminan la MAX_PATHlimitación parecen omitir ese preprocesamiento también.


Entonces, hay dos formas de arreglarlo:

  • Use un programa que use la API de E / S Unicode debajo del capó. Las opciones incluyen:

  • Use el nombre 8.3 para acceder al archivo / directorio:

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

El uso de la "ruta nativa" - \\?\<full path>no ayuda aquí porque, para algunas cmdconstrucciones integradas, al menos, diry rename- estas rutas aún están sujetas al preprocesamiento:

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

File Not Found

(tenga en cuenta el punto final que falta en la salida).

ivan_pozdeev
fuente
7zip-FM (administrador de archivos 7zip) me funcionó para cambiar el nombre del archivo de puntos en Win10 x64. Rápido e indoloro.
Matt Wilkie