Il suffit de mentionner un truc que je ne vois pas encore mentionné ici.
Prenons cet exemple de fichier :
C:\Dossier1\Chemin Vraiment Long\Telle Récursion\Si Profond\Wow\Encore en Cours\Je vais bientôt manquer d'idées\J'ai des problèmes d'organisation\Trouble obsessionnel compulsif des sous-répertoires\Voici un guid pour aucune raison valable\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Presque là\Déclarations Fiscales\2013\Déclaration_fiscale_2013.pdf
Ce chemin de fichier complet fait 290 caractères de long. L'interpréteur de commandes (Windows Explorer) et la plupart des utilitaires en ligne de commande ne vous permettront probablement pas de le toucher.
Utilisez la commande subst
comme ceci :
subst X: "C:\Dossier1\Chemin Vraiment Long\Telle Récursion\Si Profond\Wow"
Maintenant, vous pouvez accéder (et supprimer, déplacer, etc.) au fichier comme suit :
X:\Encore en Cours\Je vais bientôt manquer d'idées\J'ai des problèmes d'organisation\Trouble obsessionnel compulsif des sous-répertoires\Voici un guid pour aucune raison valable\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Presque là\Déclarations Fiscales\2013\Déclaration_fiscale_2013.pdf
Et maintenant, le nom de fichier n'a plus que ~235 caractères environ, donc vous n'encounterez plus les problèmes de "Nom de fichier trop long".
Dans l'API Windows, il y a une constante tristement célèbre appelée MAX_PATH
. MAX_PATH est de 260 caractères. Le système de fichiers NTFS prend en charge les chemins de fichiers allant jusqu'à 32 767 caractères. Et vous pouvez toujours utiliser des noms de chemins de fichiers de 32 767 caractères en accédant aux versions Unicode (ou "larges") des fonctions de l'API Windows, et également en préfixant le chemin avec \\?\
.
MAX_PATH
a été défini il y a très longtemps dans le monde Windows. Je pense que cela a quelque chose à voir avec les normes ANSI à l'époque... mais c'est une de ces choses très difficiles à changer pour Microsoft maintenant, car nous avons maintenant des milliers de programmes et applications, y compris certains écrits par Microsoft eux-mêmes, qui utilisent MAX_PATH
et échoueraient de manière étrange si la constante était soudainement modifiée. (Dépassements de tampon, corruption de la pile, etc.)