Solo menciono un truco que aún no veo mencionado aquí.
Tome este archivo por ejemplo:
C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf
Esta ruta completa del archivo tiene 290 caracteres de longitud. El shell (Windows Explorer) y la mayoría de las utilidades de línea de comandos probablemente no le permitirán tocarlo.
Use el subst
comando así:
subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"
Ahora puede acceder (y eliminar, mover, etc.) al archivo de esta manera:
X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf
Y ahora ese nombre de archivo tiene solo ~ 235 caracteres más o menos, por lo que ya no se encontrará con el problema "El nombre del archivo es demasiado largo".
En la API de Windows, hay una constante infame conocida como MAX_PATH
. MAX_PATH tiene 260 caracteres. El sistema de archivos NTFS en realidad admite rutas de archivo de hasta 32,767 caracteres. Y aún puede usar nombres de ruta largos de 32,767 caracteres accediendo a las versiones Unicode (o "ancho") de las funciones de la API de Windows, y también prefijando la ruta con \\?\
.
MAX_PATH
se estableció en piedra hace mucho tiempo en el mundo de Windows. Creo que tiene algo que ver con los estándares ANSI en ese momento ... pero es una de esas cosas que es muy difícil para Microsoft cambiar ahora, ya que ahora tenemos miles de programas y aplicaciones, incluidos algunos escritos por Microsoft, que utilizan MAX_PATH
y fallaría de formas nuevas y extrañas si la constante se cambiara repentinamente (Desbordamientos de búfer, corrupción de montón, etc.)