in

Pourquoi Windows signale-t-il que ce dossier est trop long à copier?

Si vous travaillez avec Windows suffisamment longtemps, en particulier avec des dossiers et des fichiers qui ont des noms longs, vous rencontrerez une erreur étrange: Windows signalera que le chemin du dossier ou le nom de fichier est trop long pour être déplacé vers une nouvelle destination ou même supprimer. Quel est le problème?

Hé Geek How-To!

Donc, l’autre jour, je réorganisais certains fichiers sur mon ordinateur, créant des dossiers, ce genre de choses. Ensuite, lorsque je déplaçais des fichiers dans un dossier, je reçois un message indiquant que le chemin du dossier résultant serait trop long. J’étais confus. Je sais que chaque système d’exploitation depuis DOS prend en charge les noms de fichiers longs, mais Windows prétend que le chemin est trop long? Pourquoi cela arrive-t-il?

Sincèrement,

M. désorganisé

Le problème que vous rencontrez est une malheureuse intersection de deux systèmes qui, dans des cas comme celui-ci, génère une erreur. Pour comprendre exactement d’où vient l’erreur, nous devons fouiller dans l’histoire des noms de fichiers longs (LFN) et comment Windows interagit avec eux avant de plonger dans les solutions.

Les noms de fichiers longs ont été introduits, via l’architecture MS-DOS sous-jacente, dans Windows 95. Le nouveau système LFN permettait des noms de fichiers et de répertoires de 255 caractères maximum. C’était une extension bienvenue du système de noms de fichiers précédent, généralement appelé 8.3 nom de fichier car le nom était limité à huit caractères et une extension à trois chiffres, mais également connu sous le nom de nom de fichier court (SFN). Comme vous pouvez l’imaginer, à l’époque, il y avait encore beaucoup d’applications basées sur DOS et il y avait plus que quelques maux de tête à essayer de faire en sorte que les nouveaux LFN et les anciens SFN jouent bien les uns avec les autres. Si vous avez déjà rencontré une disquette ou un CD-ROM plus ancien contenant des fichiers étrangement tronqués (comme abcdef ~ 1.txt), ce nom de fichier a été réduit par une application héritée utilisant SFN à partir d’un LFN plus long et non pris en charge (comme abcdefghijk. SMS).

Nous sommes loin du milieu des années 1990, cependant, et tout le problème du nom de fichier long est (pour la plupart) fermement résolu. Si vous utilisez une version de Windows des 10 dernières années, vous n’avez probablement jamais rencontré de conflit de longueur de nom de fichier comme celui que nous avions l’habitude de rencontrer sous DOS / Windows 95 jours. Cela dit, nous avons toujours le hoquet, comme vous l’avez découvert avec votre projet de nettoyage de disque. Mais pourquoi? Si le système de nom de fichier long de Windows prend en charge des dossiers et des noms de fichiers de 255 caractères maximum par composant, dans quel mur êtes-vous en train de vous heurter? Nous ne pouvons pas blâmer NTFS (le système de fichiers que la grande majorité des machines Windows modernes utilisent) car NTFS prendra en charge un chaînage de dossiers et de noms de fichiers jusqu’à une longueur de chemin totale de 32 767 caractères. Cela dépasse de loin la structure de répertoires typique dont la plupart des utilisateurs auraient besoin.

Là où tout s’effondre, c’est une restriction artificielle que Windows empile au-dessus du système LFN / NTFS: la variable MAX_PATH. La variable MAX_PATH spécifie qu’une structure de répertoire complète dans Windows ne peut pas dépasser 260 caractères au total, y compris la lettre de lecteur, les deux points, la barre oblique inverse et la barre oblique nulle à la fin. Ainsi, vous n’avez qu’un potentiel réel MAX_PATH de 256 caractères, par exemple.

Donc, ce qui s’est passé lorsque vous nettoyiez votre ordinateur, c’est que vous aviez un répertoire avec un chemin déjà long (soit parce que les noms de dossier étaient longs, les noms de fichiers étaient longs, soit les deux), et lorsque vous avez tenté de déplacer un ou plusieurs ces répertoires dans un autre répertoire avec un long chemin, la longueur totale du nom du chemin a dépassé la limite de 260 caractères imposée par la variable MAX_PATH.

Maintenant, vous pensez peut-être «Ah-hah! Nous allons simplement changer la variable MAX_PATH et résoudre le problème! » Hélas, ce n’est pas si simple. Non seulement la variable MAX_PATH est essentiellement codée en dur dans Windows, mais même si vous aviez l’énorme tracas de la changer, vous finiriez par casser tellement que cela n’en vaudrait pas la peine. Trop d’applications s’attendent à ce que la variable de chemin soit ce que Windows a longtemps spécifié. Nous ne pouvons pas simplement changer cela sans créer un énorme gâchis.

Où cela vous laisse-t-il? Eh bien, la solution la plus simple consiste simplement à modifier les données du chemin. Par exemple, si vous avez une tonne d’articles enregistrés où l’application / l’extension que vous avez utilisée pour les enregistrer à partir du Web a créé un répertoire qui était le titre complet de l’article + le chef de file de l’article, puis le nom du fichier lui-même est le titre complet de l’article + le lead de l’article, il serait très simple d’atteindre ou de dépasser le MAX_PATH avec une seule sauvegarde. La modification de ces énormes titres de dossiers et d’articles à une taille plus raisonnable est un moyen facile de résoudre le problème.

Si vous avez un grand nombre de fichiers avec un chemin long et que vous ne voulez pas tous les éditer (ou si vous voulez une tonne d’anciens répertoires qui sont trop longs pour que Windows puisse les traiter lorsqu’ils sont limités par la variable MAX_PATH), il existe une solution de contournement en ligne de commande. Même si Windows est limité par la variable MAX_PATH, les ingénieurs Windows ont réalisé qu’il y aurait des situations dans lesquelles les utilisateurs auraient besoin de traiter des noms de chemin plus longs. En tant que tel, l’API Windows a une fonction pour traiter des chemins extrêmement longs.

Afin de tirer parti de cette API et d’utiliser des outils de ligne de commande sur vos dossiers / noms de fichiers peu maniables, il vous suffit d’ajouter le nom du répertoire avec quelques caractères supplémentaires. Par exemple, si vous aviez une énorme structure de répertoires que vous vouliez supprimer (mais que vous receviez une erreur en raison de la longueur du chemin lorsque vous l’avez essayée), vous pouvez modifier la commande à partir de:

rmdir c:documentssome-really-super-long-folder-name-scheme

à:

rmdir ?c:documentssome-really-super-long-folder-name-scheme

La clé est l’ajout du ? partie avant le début du chemin du fichier; cela demande à Windows de ne pas tenir compte des limitations imposées par la variable MAX_PATH et d’interagir avec le chemin que vous venez de fournir tel qu’il est fourni / compris directement par le système de fichiers sous-jacent (qui peut clairement prendre en charge un chemin plus long). Comme toujours, soyez prudent à l’invite de commande pour éviter de supprimer accidentellement des fichiers ou des répertoires que vous aviez l’intention de laisser intacts.

Si notre aperçu de ce problème vous rend curieux, jetez un œil à cet article du Bibliothèque Microsoft Developer Network, noms de fichiers, chemins et espaces de noms, pour plus d’informations sur ce qui se passe sous le capot.

Vous avez une question technique urgente? Envoyez-nous un e-mail à ask@howtogeek.com et nous ferons de notre mieux pour y répondre.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment configurer un appel vidéo Skype auquel tout le monde peut participer

Comment ouvrir plusieurs documents Word à la fois

Comment ouvrir plusieurs documents Word à la fois