مشکل محدودیت طول نام فایل در ویندوز

ویندوز بیش از ۱۰ سال است که راهکاری برای رفع مشکل محدودیت طول نام فایل (File Name Too Long) ارائه داده، اما همچنان فعالسازی دستی آن توسط کاربر الزامی است.
خطای «File name too long» یکی از مشکلات ویندوز است که باعث اتلاف وقت زیادی میشود. در ویندوز قابلیتی وجود دارد که به برنامههای سازگار اجازه میدهد با مسیرهایی (Paths) فراتر از محدودیت سنتی ۲۶۰ کاراکتر کار کنند؛ با این حال، این گزینه بهصورت پیشفرض غیرفعال است و پیام خطا نیز راهنمایی مستقیمی برای فعالسازی آن ارائه نمیدهد.
ویندوز بیش از ۱۰ سال است راهکاری برای رفع مشکل «نام فایل طولانی» دارد، اما همچنان آن را غیرفعال نگه داشته است
خطای «File name too long» یکی از مشکلات ویندوز است که باعث اتلاف وقت زیادی میشود. قابلیتی در ویندوز وجود دارد که به برنامههای سازگار اجازه میدهد با مسیرهایی (Paths) فراتر از محدودیت سنتی ۲۶۰ کاراکتر کار کنند؛ با این حال، این گزینه بهصورت پیشفرض غیرفعال است و پیام خطا نیز راهنمایی مستقیمی برای فعالسازی آن ارائه نمیدهد.
من برای درک بهتر این موضوع، بهصورت عمدی ساختار پوشهای ایجاد کردم که باعث بروز این خطا شود. نتیجه مطابق انتظارم نبود و دیدگاه مرا نسبت به این خطا تغییر داد.
فایل اکسپلورر همچنان با دیوار برخورد میکند
برای آزمایش، یک پوشه خالی روی دسکتاپ ایجاد کردم و سپس پوشههای جدیدی را درون آن قرار دادم. نام هر پوشه را بهقدری طولانی انتخاب کردم تا محدودیت کاراکترها سریعتر پر شود.
وقتی طول مسیر به ۲۳۹ کاراکتر رسید، توقف کردم. ویندوز ۱۱ (نسخه 25H2) هیچ هشداری نشان نداد و مقدار LongPathsEnabled در سیستم من بهطور پیشفرض روی ۰ تنظیم شده بود.
همه چیز زمانی تغییر کرد که تلاش کردم یک پوشه نهایی با نام Folder_7_123456789012 ایجاد کنم. این نام ۲۱ کاراکتری، طول مسیر را به ۲۶۱ کاراکتر رساند و از محدودیت ۲۶۰ کاراکتری فراتر رفت. در این لحظه، پیام خطایی دریافت کردم: "The file name(s) would be too long for the destination folder." و به من پیشنهاد شد که نام آن را کوتاه کنم یا از مکانی با مسیر کوتاهتر استفاده کنم.
۲۱ کاراکتر عدد بزرگی نیست، بنابراین مشکل از نام آن یک پوشه نبود؛ ویندوز مجموع کل مسیر، شامل حرف درایو، تمام پوشههای والد و اسلشها را محاسبه میکرد. بنابراین، حتی اگر پیام خطا به «نام فایل» اشاره کند، محدودیت برای کل مسیر اعمال میشود، نه فقط برای نام نهایی فایل یا پوشه.
### ویندوز یک کلید کنترلی دارد، اما اکسپلورر به آن بیاعتناست
باید بررسی میکردم که آیا فایل اکسپلورر (Explorer) تنها ابزاری است که با این مشکل مواجه میشود یا خیر. قبل از ایجاد هر تغییری، با استفاده از PowerShell 5.1 سعی کردم همان پوشه را با مسیر ۲۶۱ کاراکتری بسازم که با خطا مواجه شد.
سپس سراغ مقدار رجیستری LongPathsEnabled رفتم که در مسیر HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem قرار دارد. مقدار آن را از ۰ به ۱ تغییر دادم و سیستم را ریاستارت کردم (ریاستارت کامل سیستم ضروری بود، چرا که ویندوز مقدار رجیستری را به ازای هر پردازش میخواند).
پس از تغییر، آزمایشها را تکرار کردم:
* در فایل اکسپلورر: همچنان همان خطای قبلی را دریافت کردم.
* در پاورشل (PowerShell): دستور ساخت پوشه که پیشتر شکست خورده بود، این بار با موفقیت اجرا شد.
چرا برنامه باید «موافق» باشد؟
دلیل این تفاوت در مستندات مایکروسافت نهفته است. محدودیت ۲۶۰ کاراکتری از ویندوز ۱۰ نسخه ۱۶۰۷ به بعد برای بسیاری از توابع رایج Win32 حذف شد. اما برای بهرهمندی از این قابلیت، مانیفستِ برنامه باید شامل تنظیم LongPathAware باشد تا به ویندوز اعلام کند که آن برنامه قابلیت کار با مسیرهای طولانی را دارد.
ظاهراً فایل اکسپلورر فاقد این تنظیم است. تعجبآور است که این قابلیت نزدیک به یک دهه در ویندوز وجود دارد، اما رجیستری آن بهصورت پیشفرض غیرفعال است و حتی پس از فعالسازی، پرکاربردترین ابزار مدیریت فایل ویندوز از آن استفاده نمیکند.
حدس و گمانها
به نظر میرسد این طراحی انتخابی (Opt-in) به حفظ سازگاری با نرمافزارهای قدیمی کمک میکند، اگرچه مایکروسافت هرگز مستقیماً این موضوع را اعلام نکرده است. پیام خطا همچنان ناقص به نظر میرسد، چرا که به کاربر نمیگوید آیا راهکاری (مثل تغییر تنظیمات رجیستری) وجود دارد یا خیر.
برای فایل اکسپلورر، کوتاه کردن مسیر (تغییر نام پوشههای والد یا انتقال به ریشه درایو) همچنان مطمئنترین راهکار است. با این حال، من تنظیم LongPathsEnabled را فعال نگه داشتهام، زیرا در پاورشل و ابزارهای سازگار، تفاوت عملی ایجاد میکند.
تغییر بزرگ اینجاست: من دیگر «خطای نام طولانی فایل» را شکایتی از خودِ فایل نمیبینم، بلکه آن را پرسشی درباره قابلیتها و محدودیتهای برنامهای که سعی در استفاده از آن دارم، تلقی میکنم.

