خطای «نام فایل بیش از حد طولانی است» یکی از خطاهای ویندوز است که وقت زیادی از من گرفته. ویندوز تنظیمی دارد که به برنامههای سازگار اجازه میدهد با مسیرهایی طولانیتر از سقف سنتی ۲۶۰ نویسه کار کنند. بااینحال، این گزینه بهطور پیشفرض خاموش است و پیام خطا نیز شما را مستقیماً به آن راهنمایی نمیکند.
میخواستم عملکرد این قابلیت را در عمل ببینم؛ بنابراین عمداً ساختاری از پوشهها ساختم که خطا را پدید بیاورد. نتیجه آن چیزی نبود که انتظار داشتم و برداشت مرا از این خطا تغییر داد.
فایل اکسپلورر همچنان به بنبست میرسد
مسیر ۲۶۱ نویسهای ساختم و ویندوز نپذیرفت





برای آزمایش، پوشهای خالی روی دسکتاپ ساختم. سپس پوشههای تازه را یکی پس از دیگری درون آنها قرار دادم و برای هرکدام نامی بهاندازه کافی بلند برگزیدم تا شمار نویسهها بهسرعت افزایش یابد.
وقتی طول کامل مسیر به ۲۳۹ نویسه رسید، ساخت پوشههای تودرتو را متوقف کردم؛ هرچند رسیدن به این عدد بیش از آنچه انتظار داشتم پوشه لازم داشت. تا آن لحظه، Windows ۱۱ 25H2 (build ۲۶۲۰۰.۹۴۵۷) هیچ هشدار یا خطایی نشان نداده بود و مقدار LongPathsEnabled نیز بهطور پیشفرض روی رایانهام ۰ بود.
همهچیز زمانی تغییر کرد که کوشیدم آخرین پوشه تودرتو را با نام Folder_7_123456789012 بسازم. این نام ۲۱ نویسه داشت و طول کامل مسیر را به ۲۶۱ نویسه میرساند؛ یعنی اندکی فراتر از سقف ۲۶۰ نویسهای. در این مرحله، پنجرهای با این پیام ظاهر شد: «نام فایل یا فایلها برای پوشه مقصد بیش از حد طولانی خواهد بود.» ویندوز پیشنهاد میکرد نام را کوتاه کنم یا مکانی با مسیر کوتاهتر برگزینم.
بیستویک نویسه چندان زیاد نیست؛ پس مشکل از نام پوشه نبود. ویندوز فقط نام یک پوشه را نمیشمرد، بلکه کل مسیر را در نظر میگرفت؛ از حرف درایو و همه پوشههای بالادست گرفته تا ممیزهای وارونه میان آنها.
مسیر خود پوشه دسکتاپ حتی پیش از ساخت نخستین پوشه تودرتو به طول مسیر افزوده میشود. بنابراین، هرچند پیام خطا نام فایل را مقصر جلوه میدهد، این محدودیت بر کل مسیر اعمال میشود، نه فقط نام آخرین فایل یا پوشه.
ویندوز کلیدش را دارد، اما اکسپلورر اعتنایی نمیکند
تنظیم را تغییر دادم؛ فقط یک ابزار متوجه شد

باید مشخص میشد آیا فقط اکسپلورر چنین رفتاری دارد یا نه. بنابراین، پیش از هر تغییری Windows PowerShell ۵.۱ را باز کردم و با دستور New-Item همان پوشه را در همان مسیر ۲۶۱ نویسهای ساختم. پاورشل نیز شکست خورد.
در رجیستری مقداری با نام LongPathsEnabled وجود دارد که کلید ویندوز برای مدیریت این وضعیت است و در HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem نگهداری میشود. مقدار آن را از ۰ به ۱ تغییر دادم، رایانه را از نو راهاندازی کردم و مطمئن شدم تغییر پابرجا مانده است. احتمالاً بستن و بازکردن دوباره برنامهها کافی نبود و راهاندازی مجدد کامل سیستم ضرورت داشت، زیرا ویندوز مقدار رجیستری را برای هر فرایند جداگانه میخواند.
سپس هر دو آزمایش را با همان مسیر و دقیقاً همان عملیات دوباره روی رایانهام اجرا کردم. تنها چیزی که تغییر کرده بود، همین مقدار رجیستری بود.
در اکسپلورر دقیقاً همان خطا را دیدم:
نام فایل یا فایلها برای پوشه مقصد بیش از حد طولانی خواهد بود. میتوانید نام فایل را کوتاه کنید و دوباره بکوشید، یا مکانی با مسیر کوتاهتر را امتحان کنید.
اما ماجرا در پاورشل متفاوت بود. دستوری که پیشتر شکست خورده بود، این بار پوشه تازه را با موفقیت ساخت.
| ابزار | LongPathsEnabled = 0 | LongPathsEnabled = 1 |
|---|---|---|
| فایل اکسپلورر | ناموفق | ناموفق |
| PowerShell 5.1 | ناموفق | موفق |
این نتیجه برایم کمی عجیب بود، بهویژه چون هر دو آزمایش روی یک رایانه انجام میشدند. در آزمایش من، این تنظیم رفتار پاورشل را تغییر داد، اما بر اکسپلورر اثری نگذاشت. اکسپلورر که ابزار پیشفرض بیشتر کاربران برای کار با پوشههاست، با کلید بهروزشده رجیستری سازگار نشد.
خود برنامه هم باید همراهی کند
چرا پاورشل پوشه را ساخت، اما اکسپلورر نتوانست

توضیح این موضوع در مستندات خود مایکروسافت آمده است. از ویندوز ۱۰ نسخهٔ ۱۶۰۷ به بعد، محدودیت ۲۶۰ نویسهای از چند تابع پرکاربرد Win32 برای کار با فایلها و پوشهها برداشته شد. بااینحال، پس از فعالسازی این قابلیت، مانیفست برنامه باید دارای تنظیم LongPathAware باشد تا به ویندوز اعلام کند که برنامه میتواند مسیرهای طولانیتر را مدیریت کند.
PowerShell 5.1 responded to the setting in my test, while Explorer did not. In my testing, I can only assume that Explorer's manifest doesn't include that LongPathAware setting. So while Windows had long-path support enabled, Explorer didn't take advantage of it.
شگفتآور است که پشتیبانی از مسیرهای طولانی نزدیک به یک دهه در ویندوز وجود داشته، اما کلید مربوط به آن در رجیستری سیستم من همچنان بهطور پیشفرض غیرفعال است. حتی پس از آنکه فعالش کردم، ابزاری که بیشتر مردم برای مدیریت پوشهها به کار میبرند همچنان با تنظیم قدیمی کار میکرد. این نمونهای از راهحلی است که ممکن است خودبهخود به همهجا راه پیدا نکند.
آنچه میماند، چند گمانهزنی است
وقتی رایانه برخلاف انتظارتان رفتار میکند، ناگزیر به گمانهزنی روی میآورید؛ بهویژه اگر هیچ پاسخ رسمیای در کار نباشد. حدس من در این مورد آن است که طراحی این قابلیت بهصورت انتخابی، به حفظ سازگاری با نرمافزارهای قدیمیِ ساختهشده بر پایهٔ محدودیت سنتی کمک میکند. اگر این برداشت درست باشد، راهی منطقی برای حفظ سازگاری با نرمافزارهای قدیمی است؛ هرچند مایکروسافت هرگز بهصراحت چنین چیزی نگفته است.
بااینهمه، پیام خطا هنوز ناقص به نظر میرسد؛ زیرا اکسپلورر با وجود آنکه از شما میخواهد نام فایل را کوتاه کنید، هیچگاه نمیگوید آیا تنظیمی برای رفع مشکل وجود دارد یا فعالکردن آن کمکی خواهد کرد.
دستکم در خود اکسپلورر، کوتاهکردن مسیر همچنان راهحل مطمئنتری است؛ چه با کوتاهکردن نام پوشههای بالادستی و چه با انتقال پوشه به جایی نزدیکتر به ریشهٔ درایو. این راهکار در همهٔ برنامهها جواب میدهد.
بااینحال، تنظیم LongPathsEnabled را فعال نگه داشتم؛ زیرا آزمایش من در PowerShell نشان داد که این گزینه برای برنامههای پشتیبان مسیرهای طولانی، تفاوتی ملموس ایجاد میکند.
تغییر اساسی این است که دیگر پیام «نام فایل بیش از حد طولانی است» را ایرادی مربوط به خود فایل نمیدانم؛ اکنون آن را پرسشی دربارهٔ برنامهای میبینم که این درخواست را مطرح کرده است.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Afam Onyimadu است. مشاهده مقاله اصلی