نحوه رفع مشکل «نام فایل خیلی طولانی است» در ویندوز

اگر تا به حال این مشکل را دیده اید، احتمالاً یک راه حل ساده برای شما بوده است. اگر این خطا را بیش از دو بار مشاهده کرده اید، پس می دانید که گاهی اوقات رفع آن می تواند مشکل پیچیده ای باشد.

بیایید امیدوار باشیم که فقط با انواع تعمیر آسان مواجه شوید، اما ما شما را برای تعمیرات کمتر آسان و تضمینی نیز آماده خواهیم کرد.

چرا طول نام فایل حتی در ویندوز یک مشکل است؟(Why Is Filename Length Even An Issue In Windows?)

سابقه طولانی مدت طولانی بودن نام فایل برای سیستم عامل هایی مانند ویندوز(Windows) وجود دارد. زمانی بود که نمی‌توانستید نام فایل‌هایی بیش از 8 کاراکتر به اضافه پسوند فایل 3 کاراکتری داشته باشید. بهترین کاری که می توانستید انجام دهید چیزی شبیه myresume.doc بود. این یک محدودیت در طراحی سیستم فایل بود.

با انتشار نسخه های جدید ویندوز(Windows) ، اوضاع بهتر شد. ما از یک سیستم فایل قدیمی، محدود به چیزی به نام سیستم فایل فناوری جدید(New Technology File System) ( NTFS ) تبدیل شدیم. NTFS ما را به نقطه ای رساند که نام فایل می تواند 255 کاراکتر باشد و طول مسیر فایل به طور بالقوه می تواند تا 32767 کاراکتر برسد. بنابراین چگونه می‌توانیم نام فایل‌هایی داشته باشیم که خیلی طولانی هستند؟

ویندوز(Windows) دارای چیزهایی است که به عنوان متغیرهای سیستم شناخته می شوند. اینها متغیرهایی هستند که ویندوز(Windows) برای عملکرد به آنها متکی است، زیرا ویندوز(Windows) همیشه معنی متغیرها و مکان آنها را می داند، حتی زمانی که بیت ها و بایت ها را در همه جا جابجا می کنیم. متغیر سیستم MAX_PATH متغیری است که نام فایل ها و مسیرهای فایل را به کمتر از 260 کاراکتر محدود می کند.

به عنوان یک متغیر، فکر می کنید می توانیم آن را تغییر دهیم. نه، ما نباید. مثل بیرون کشیدن یک نخ از پلیور است. به محض تغییر یک متغیر سیستم، سایر متغیرهای سیستم و اجزای وابسته به آنها شروع به بازگشایی می کنند.

پس چطوری درستش کنیم؟

رفع آسان(The Easy Fix)

اگر خوش شانس باشید، خطا را دریافت می‌کنید و دقیقاً می‌دانید که نام کدام فایل باعث این مشکل شده است. یا حداقل کجا می توان فایل را پیدا کرد. شاید نام فایلی داشته باشید که چیزی شبیه به:

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

در این مورد مشخص است که مجرم کیست. فایل را در Windows Explorer یا File Explorer که در ویندوز 10(Windows 10) نامیده می شود پیدا کنید، یک بار روی آن کلیک کنید، F2 را بزنید تا نام آن تغییر کند و نام فایل احمقانه را به چیزی معقول تر تغییر دهید. مشکل(Problem) حل شد

رفع کمتر آسان(The Less Easy Fixes)

رفع این مشکل همیشه به این راحتی نیست. گاهی اوقات ممکن است به هر دلیلی نتوانید نام فایل ها یا دایرکتوری ها را تغییر دهید.

راه حل های زیر این کار را برای شما انجام می دهند. انجام آنها سخت نیست.

انتقال(Move) ، حذف(Delete) ، یا کپی فایل ها یا دایرکتوری ها با استفاده از PowerShell(Or Copy Files Or Directories Using PowerShell)

گاهی اوقات هنگام تلاش برای انتقال، حذف یا کپی دایرکتوری هایی که تعداد کاراکترهای مسیر فایل بیش از 260 است، با خطا مواجه می شوید.

توجه داشته باشید که کلمات directory و folder قابل تعویض هستند. در ادامه از «دایرکتوری» استفاده خواهیم کرد. cmdlet های PowerShell(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 باز می شود، شما در ریشه فهرست کاربری خود خواهید بود. با فرض اینکه C:\Users\guymc دایرکتوری کاربر شما است، دنبال کنید.(Follow)

دایرکتوری با نام This در داخل دایرکتوری Documents قرار دارد. (Documents)برای انتقال به دایرکتوری Documents ، از دستور DOS cd Documents استفاده می کنیم . 

تغییر سریع به C:\Users\guymc\Documents را خواهید دید . خوبه. ما در حال نزدیک‌تر شدن به دایرکتوری‌ها هستیم که کار را آسان‌تر می‌کند.

دایرکتوری را با استفاده از Copy-Item کپی کنید

ما می خواهیم دایرکتوری This و محتویات آن را در ThatNewFolder کپی کنیم(ThatNewFolder) . بیایید از PowerShell cmdlet Copy-Item با پارامترهای -Destination و -Recurse استفاده کنیم .

-Destination به PowerShell می گوید که ما می خواهیم کپی کجا باشد. -Recurse به PowerShell می گوید که تمام موارد داخل را در مقصد کپی کند. کپی کردن، اصل را در همان جایی که هستند رها می کند و همه موارد جدید را در مقصد می سازد.

Copy-Item This -Destination ThatNewFolder -Recurse

انتقال دایرکتوری با استفاده از Move-Item

فرض کنید می‌خواهیم دایرکتوری This و همه فهرست‌ها و فایل‌های موجود در آن را به ThatNewFolder منتقل کنیم(ThatNewFolder) . جابجایی اصل را در جای خود باقی نمی گذارد.

می توانیم از PowerShell cmdlet Move-Item با پارامترهای -Path و -Destination استفاده کنیم. -Path آیتمی را که می‌خواهیم جابجا کنیم را مشخص می‌کند و -Destination به (-Destination)PowerShell می‌گوید کجا می‌خواهیم. 

cmdlet این را در داخل ThatNewFolder قرار می دهد . همچنین هر چیزی را که در داخل دایرکتوری This قرار دارد منتقل می کند. Move-Item را می توان برای جابجایی فایل ها یا دایرکتوری ها استفاده کرد و بدون توجه به مسیر فایل یا طول نام فایل کار می کند.

Move-Item -Path This -Destination ThatNewFolder

برای اطمینان از اینکه کار می کند، از دستور cd ThatNewFolder برای ورود به ThatNewFolder استفاده کنید. سپس از دستور dir برای فهرست کردن دایرکتوری ها در ThatNewFolder استفاده کنید. این دایرکتوری را در آنجا خواهید دید.

حذف دایرکتوری با استفاده از Remove-Item

اگر بخواهیم این(This ) دایرکتوری و هر آنچه در آن است را حذف کنیم، از cmdlet Remove-Item استفاده می کنیم.(Remove-Item)

cmdlet Remove-Item(Remove-Item) دارای ایمنی داخلی است که حذف دایرکتوری با چیزهایی در داخل آن را دشوار می کند. در مثال ما، می‌دانیم که می‌خواهیم همه چیز را حذف کنیم، بنابراین از پارامترهای -Recurse برای حذف همه چیز در داخل و -Force استفاده می‌کنیم تا بدون اینکه از ما بپرسیم که آیا برای هر مورد داخل آن مطمئن هستیم یا خیر.

آگاه باش! بازیابی هر چیزی که از این طریق حذف شده باشد بسیار دشوار خواهد بود. می‌توانید روش‌های نحوه بازیابی فایل‌های حذف شده تصادفی را امتحان کنید ، اما انتظار زیادی نداشته باشید.

Remove-Item This -Recurse -Force

می توانید دوباره از دستور dir استفاده کنید تا مطمئن شوید که از بین رفته است.

ویندوز 10 را مجبور به پذیرش مسیرهای طولانی فایل کنید(Make Windows 10 Accept Long File Paths)

اگر می دانید که به طور مکرر از مسیرهای طولانی فایل و نام فایل های طولانی استفاده می کنید، کار کردن ویندوز(Windows) برای شما آسان تر است. استفاده از PowerShell برای انجام هر روز کار بی معنی است.

دو راه برای انجام این کار وجود دارد. یکی برای کاربران Windows 10 Home و دیگری برای کاربران Windows 10 Pro یا Enterprise است. این روش ها ممکن است برای ویندوز 8.1(Windows 8.1) یا نسخه های قدیمی تر کار کنند، اما ما نمی توانیم آن را تضمین کنیم.

(Make)Windows 10 Home را مجبور به پذیرش مسیرهای طولانی فایل کنید(Home Accept Long File Paths)

برای اینکه Windows 10 Home مسیرهای طولانی فایل را بپذیرد، باید ویرایشگر رجیستری(Registry Editor) را باز کنیم . اگر قبلاً در ویرایشگر رجیستری(Registry Editor) کار نکرده اید ، محتاط باشید. حذف یا تغییر تصادفی موارد در اینجا می تواند ویندوز(Windows) را به طور کامل متوقف کند.

همیشه قبل از هر تغییری از رجیستری خود یک نسخه پشتیبان تهیه کنید. در راهنمای نهایی ما برای تهیه نسخه پشتیبان و بازیابی رجیستری ویندوز،( Ultimate Guide to Backing Up and Restoring the Windows Registry) هر آنچه را که باید در مورد آن بدانید بیاموزید .

پس از باز کردن ویرایشگر(Editor) رجیستری و تهیه نسخه پشتیبان، به مکان HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem بروید و کلید LongPathsEnabled را پیدا کنید .

روی LongPathsEnabled(LongPathsEnabled) دوبار کلیک کنید . در قسمت Value data: مطمئن شوید که عدد 1 در آن وجود دارد. برای انجام تغییر روی OK(OK) کلیک کنید .

از ویرایشگر رجیستری(Registry Editor) خارج شوید و اکنون باید بتوانید با مسیرهای فایل طولانی دیوانه کار کنید.

(Make)Windows 10 Pro یا Enterprise Long File Paths (Pro Or Enterprise Accept Long File Paths)را بپذیرد

برای اینکه به Windows 10 Pro یا Enterprise اجازه دهیم از مسیرهای فایل طولانی استفاده کنند، از ویرایشگر Group Policy(Group Policy Editor) استفاده می کنیم . این ابزاری است که به ما امکان می دهد سیاست هایی را در مورد نحوه عملکرد ویندوز در سطح رایانه و کاربر تنظیم کنیم.

ما چندین مقاله در مورد استفاده از خط مشی گروه برای انجام کارهایی مانند غیرفعال کردن یا فعال کردن گزینه های Internet Explorer( disabling or enabling Internet Explorer options) یا افزودن یک پیام به صفحه ورود( adding a message to the logon screen) داریم .

با رفتن به منوی Start و تایپ کردن gpedit ، ویرایشگر Group Policy(Group Policy Editor) را باز کنید . نتیجه برتر باید ویرایش خط مشی گروه(Edit group policy) باشد. روی آن دوبار کلیک کنید.

هنگامی که ویرایشگر خط مشی گروه(Group Policy Editor) باز شد، به Computer Configuration > Administrative Templates > System > Filesystem بروید . در آنجا خط مشی Enable Win32 long paths(Enable Win32 long paths) را خواهید دید .

برای ویرایش تنظیمات خط مشی روی آن دوبار کلیک کنید. آن را از Disabled به Enabled تغییر دهید ، سپس روی دکمه OK کلیک کنید تا تغییر انجام شود. 

این سیاست ممکن است فوراً اعمال نشود. با این حال، می توانید خط مشی گروه را مجبور به به روز رسانی( force the group policy to update) کنید.

خودشه(That’s It)

راه‌های دیگری برای کار کردن با نام فایل‌های طولانی و مسیرهای فایل وجود دارد، اما آنچه در اینجا مرور کرده‌ایم ساده‌ترین و مؤثرترین روش‌ها هستند.



About the author

من یک برنامه نویس کامپیوتر هستم و بیش از 15 سال است که هستم. مهارت های من در توسعه و نگهداری برنامه های کاربردی نرم افزاری و همچنین ارائه پشتیبانی فنی برای آن برنامه ها نهفته است. همچنین برنامه نویسی کامپیوتر را به دانش آموزان دبیرستانی آموزش داده ام و در حال حاضر یک مربی حرفه ای هستم.



Related posts