Un de nos clients utilise habituellement de très longs noms de chemins (plusieurs dossiers imbriqués, avec des noms longs) et nous rencontrons régulièrement des "problèmes de formation des utilisateurs" afin de réduire le chemin à moins de 260 caractères.
Existe-t-il une solution technique? Pouvons-nous appuyer sur une sorte de commutateur dans Windows 7 et Windows 2008 R2 pour dire "Oui, ignorez simplement ces problèmes historiques et faites en sorte que le nom de chemin d'accès à +260 caractères fonctionne".
Post-scriptum J'ai lu et suis totalement non édifié par les noms de fichiers, chemins et espaces de noms
windows
windows-server-2008
windows-7
ntfs
Christopher Edwards
la source
la source
Réponses:
Les méthodes sont là, mais jusqu'à ce que Microsoft re-code le widget de navigateur de fichiers, nous sommes pratiquement confrontés à ce vieux problème. C'est sous-optimal, mais c'est comme ça que ça fonctionne.
la source
Mentionnons juste un truc que je ne vois pas encore mentionné ici.
Prenez ce fichier par exemple:
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
Ce chemin d'accès complet contient 290 caractères. Le shell (Explorateur Windows) et la plupart des utilitaires de ligne de commande ne vous permettront probablement pas de le toucher.
Utilisez la
subst
commande comme suit:Vous pouvez maintenant accéder (et supprimer, déplacer, etc.) au fichier de la manière suivante:
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
Et maintenant, ce nom de fichier ne contient que ~ 235 caractères environ, vous ne rencontrerez donc plus le problème "Le nom du fichier est trop long".
Dans l'API Windows, il existe une constante infâme appelée
MAX_PATH
. MAX_PATH contient 260 caractères. Le système de fichiers NTFS prend en charge les chemins de fichiers comportant jusqu'à 32 767 caractères. Et vous pouvez toujours utiliser des noms de chemin longs de 32 767 caractères en accédant aux versions Unicode (ou "large") des fonctions de l'API Windows, ainsi qu'en préfixant le chemin\\?\
.MAX_PATH
était gravé dans la pierre 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 qu’il est très difficile pour Microsoft de changer maintenant, car nous avons maintenant des milliers de programmes et d’applications, y compris celles écrites par Microsoft elles-mêmes.MAX_PATH
et échouerait de nouvelles manières étranges si la constante était changée soudainement. (Débordement de tampon, corruption de tas, etc.)la source
subst
utiliser des jonctions de répertoires, ce qui peut être plus pratique à nettoyer si vous souhaitez apporter quelques modifications rapides. J'utilise lien Shell Extension , mais vous pouvez simplement utiliser lamklink
commande comme ceci:mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"
.Vous pouvez contourner cette limitation en utilisant la notation \\? \ C:. C'est moche, mais ça supporte des fichiers allant jusqu'à 2 ^ 15.
http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath
la source
c:\usr-data
vers `c: \ Users \ VeryLongUserName \ LongFolderName` et lui dire d'utiliser l'ancien, mais s'il nomme régulièrement les dossiers dans une quarantaine de caractères, cela ne changera rien ...Microsoft a maintenant un correctif disponible pour ce débutant avec Windows 10, qui est expliqué dans l' article MSDN sur les noms de fichiers, chemins d'accès et espaces de noms .
darthcoder a déjà répondu avec des détails sur le
\\?\C:
contournement de la notation, mais il existe maintenant une clé de registreHKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
qui peut être utilisée pour supprimer les limitations de MAX_PATH pour un seul système. L'article mentionne également la prise en charge du contrôle de la stratégie de groupeComputer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths
pour une implémentation d'organisation ou à l'échelle du groupe, si nécessaire.la source