Как да коригирате проблема „Името на файла е твърде дълго“ в Windows

Ако някога сте виждали този проблем, вероятно това е лесно решение за вас. Ако сте виждали тази грешка повече от два пъти, значи също знаете, че понякога може да бъде сложен проблем, който трябва да се поправи.

Да се ​​надяваме, че ще се сблъскате само с разнообразието от лесни поправки, но ние ще ви подготвим и за по-малко лесните, гарантирано работещи корекции.

Защо дължината на името на файла дори е проблем в Windows?(Why Is Filename Length Even An Issue In Windows?)

Има дълга история на дължините на имената на файловете, които са били проблем за операционни системи като Windows . Имаше време, когато не можеше да имаш имена на файлове, по-дълги от 8 знака плюс 3-знаково разширение на файла. Най-доброто, което бихте могли да направите, е нещо като myresume.doc . Това беше ограничение, наложено от дизайна на файловата система.

Нещата се подобриха с излизането на нови версии на Windows . Ние преминахме от стара, ограничена файлова система към нещо, наречено Нова технологична файлова система(New Technology File System) ( NTFS ). NTFS ни отведе до точка, в която името на файла може да бъде дълго 255 знака, а дължината на пътя на файла може да достигне до 32 767 знака. И така, как е възможно да имаме твърде дълги имена на файлове?

Windows има неща, известни като системни променливи. Това са променливи, на които Windows разчита, за да функционират, защото Windows винаги ще знае какво означават променливите и къде се намират, дори когато преместваме битове и байтове навсякъде. Системната променлива MAX_PATH е тази, която ограничава имената на файловете и файловите пътеки до под 260 знака.

Като променлива, бихте си помислили, че можем да я променим. Не, не трябва. Би било като да издърпате конец от пуловер. Веднага след като една системна променлива се промени, други системни променливи и компоненти, зависещи от тях, започват да се разпадат.

Тогава как да го оправим?

Лесното поправяне(The Easy Fix)

Ако имате късмет, ще получите грешката и ще знаете точно името на файла, което причинява проблема. Или поне къде да намеря файла. Може би имате име на файл, което изглежда нещо като:

C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

Ясно е кой е нарушителят в случая. Намерете файла в Windows Explorer или File Explorer , както се нарича в Windows 10 , щракнете веднъж върху него, натиснете F2 , за да го преименувате, и променете това глупаво име на файл на нещо по-разумно. Проблемът(Problem) е решен.

По-малко лесни поправки(The Less Easy Fixes)

Не винаги е толкова лесно да се реши този проблем. Понякога може да не сте в състояние да промените имената на файлове или директории по някаква причина.

Следните решения ще ви свършат работа. Не са трудни за изпълнение.

Преместване(Move) , изтриване(Delete) или копиране на файлове или директории с помощта на PowerShell(Or Copy Files Or Directories Using PowerShell)

Понякога получавате грешка, когато се опитвате да преместите, изтриете или копирате директории, където броят на знаците за пътя на файла е повече от 260.

Имайте предвид, че думите директория и папка са взаимозаменяеми. Ще използваме „директория“ занапред. Следните командни команди на PowerShell могат да се използват и върху файлове.

Може би пътят на файла изглежда така:

C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx

Този път към файла е дълъг 280 знака. Така че не можем да копираме директорията от там някъде другаде с нормалния метод за копиране и поставяне. Получаваме грешка за твърде дълъг път на целта .(Destination Path Too Long)

Да предположим, че по някаква причина не можем да преименуваме директориите, в които е вложен файлът. И какво ще правим?

Отворете PowerShell(Open PowerShell) . Ако все още не сте използвали PowerShell , насладете се на нашата статия Използване на PowerShell за домашни потребители – Ръководство за начинаещи(Using PowerShell for Home Users – A Beginner’s Guide) . Можете обаче да направите следващите стъпки, без да четете статията.

Когато PowerShell се отвори, вие ще бъдете в основата на вашата потребителска директория. Следвайте(Follow) , като приемем, че C:\Users\guymc е вашата потребителска директория.

Директорията с име Това(This) е вътре в директорията Документи(Documents) . За да се преместим в директорията Documents , използваме командата на DOS cd Documents

Ще видите бързата промяна на C:\Users\guymc\Documents . Това е добре. Работим по-близо до директориите, което ще улесни нещата.

Копиране на директория с помощта на Copy-Item

Искаме да копираме директорията This и нейното съдържание в ThatNewFolder . Нека използваме командлета на PowerShell Copy-Item с параметрите -Destination и -Recurse .

-Destination казва на PowerShell къде искаме да бъде копието. -Recurse казва на PowerShell да копира всички елементи вътре до местоназначението. Копирането оставя оригиналите там, където са, и прави всички нови в местоназначението.

Copy-Item This -Destination ThatNewFolder -Recurse

Преместване на директория с помощта на Move-Item

Да кажем, че искаме да преместим директорията This и всички директории и файлове в нея в ThatNewFolder . Преместването не оставя оригинала на място.

Можем да използваме командлета PowerShell Move-Item с параметрите -Path и -Destination . -Path дефинира елемента, който искаме да преместим и -Destination казва на PowerShell къде го искаме. 

Командлетът ще постави This вътре в ThatNewFolder . Той също така ще премести всичко, което е вътре в тази директория. Move-Item може да се използва за преместване на файлове или директории и работи независимо от пътя на файла или дължината на името на файла.

Move-Item -Path This -Destination ThatNewFolder

За да сте сигурни, че работи, използвайте командата cd ThatNewFolder , за да влезете в ThatNewFolder . След това използвайте командата dir , за да изброите директориите в ThatNewFolder . Ще видите тази директория е там.

Изтриване на директория с помощта на Remove-Item

Ако искаме да изтрием тази(This ) директория и всичко в нея, използваме командлета Remove-Item .

Командлетът Remove-Item има известна вградена безопасност, която затруднява изтриването на директория с неща в нея. В нашия пример знаем, че искаме да изтрием всичко, така че ще използваме параметрите -Recurse , за да го накараме да изтрие всичко вътре и -Force , за да го накараме да направи това, без да ни пита дали сме сигурни за всеки елемент вътре.

Бъди предупреден! Възстановяването на всичко изтрито по този начин би било изключително трудно. Можете да опитате методите в Как да възстановите случайно изтрити файлове , но не очаквайте много.

Remove-Item This -Recurse -Force

Можете да използвате отново командата dir, за да се уверите, че я няма.

Накарайте Windows 10 да приема дълги файлови пътища(Make Windows 10 Accept Long File Paths)

Ако знаете, че ще използвате дълги файлови пътеки и дълги имена на файлове многократно, е по-лесно да накарате Windows да работи за вас. Няма смисъл да използвате PowerShell , за да вършите работата всеки ден.

Има два начина да направим това. Единият е за потребители на Windows 10 Home , а другият е за потребители на Windows 10 Pro или Enterprise . Тези методи може да работят за Windows 8.1 или по-стара версия, но не можем да гарантираме това.

Накарайте(Make) Windows 10 Home да приема дълги файлови пътища(Home Accept Long File Paths)

За да накараме Windows 10 Home да приема дълги файлови пътища, трябва да отворим редактора на системния регистър(Registry Editor) . Ако не сте работили в редактора на системния регистър(Registry Editor) преди, бъдете внимателни. Случайното изтриване или промяна на неща тук може да попречи на Windows да работи напълно.

Винаги правете резервно копие на вашия регистър, преди да правите каквито и да било промени. Научете всичко, което трябва да знаете за това в нашето окончателно ръководство за архивиране и възстановяване на системния регистър на Windows( Ultimate Guide to Backing Up and Restoring the Windows Registry) .

След като отворите редактора(Editor) на системния регистър и направите резервното си копие, отидете до местоположението HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem и намерете ключа LongPathsEnabled .

Щракнете двукратно върху LongPathsEnabled . В полето Данни за стойността:(Value data:) уверете се, че числото 1 е там. Щракнете върху OK , за да извършите промяната.

Излезте от редактора на системния регистър(Registry Editor) и вече трябва да можете да работите с лудо дълги пътеки на файлове.

Накарайте(Make) Windows 10 Pro или Enterprise да приема дълги файлови пътища(Pro Or Enterprise Accept Long File Paths)

За да позволим на Windows 10 Pro или Enterprise да използват дълги файлови пътища, ще използваме редактора на групови правила(Group Policy Editor) . Това е инструмент, който ни позволява да задаваме политики за това как Windows работи на ниво компютър и потребител.

Имаме няколко статии за използването на групови правила за извършване на неща като деактивиране или активиране на опциите на Internet Explorer( disabling or enabling Internet Explorer options) или добавяне на съобщение към екрана за влизане( adding a message to the logon screen) .

Отворете редактора на групови правила(Group Policy Editor) , като отидете в менюто " Старт(Start) " и напишете gpedit . Най-добрият резултат трябва да бъде Редактиране на групова политика(Edit group policy) . Щракнете двукратно върху това.

След като се отвори редакторът на групови правила(Group Policy Editor) , отидете на Computer Configuration > Administrative Templates > System > Filesystem . Там ще видите правилото Активиране на Win32 дълги пътища(Enable Win32 long paths) .

Щракнете двукратно върху него, за да редактирате настройката на правилата. Променете го от Disabled на Enabled , след което щракнете върху бутона OK , за да извършите промяната. 

Политиката може да не влезе в сила веднага. Можете обаче да принудите груповата политика да се актуализира( force the group policy to update) .

Това е(That’s It)

Има някои други начини за заобикаляне на дълги имена на файлове и пътеки на файлове, но това, през което преминахме тук, са най-простите и ефективни методи.



About the author

Аз съм компютърен програмист и съм от над 15 години. Уменията ми са в разработването и поддържането на софтуерни приложения, както и в предоставянето на техническа поддръжка за тези приложения. Също така съм преподавал компютърно програмиране на гимназисти и в момента съм професионален инструктор.



Related posts