যদিও এনটিএফএস প্রায় 32,000 অক্ষর দীর্ঘ পাথের অনুমতি দেয়, আপনি উইন 32 এপিআই- এর 259-অক্ষরের পাথ দৈর্ঘ্যের সীমাবদ্ধতা খুঁজে পেয়েছেন ।
উইন্ডোজ এপিআইতে ([লিঙ্কযুক্ত ডকুমেন্টে আলোচিত কিছু ব্যতিক্রম সহ) একটি পাথের সর্বাধিক দৈর্ঘ্য MAX_PATH
, যা 260 টি অক্ষর হিসাবে সংজ্ঞায়িত।
( NULL
পথের সাথে অতিরিক্তভাবে একটি সমাপ্তি অক্ষর রয়েছে যা আমাদের 259 ব্যবহারযোগ্য অক্ষর দেয়))
কারণ এক্সপ্লোরার (এবং প্রায় সমস্ত অন্যান্য উইন্ডোজ অ্যাপস) ফাইল সিস্টেম ব্যবহারের জন্য Win32 API- এর উপর নির্ভর করে, এটা না ব্যবহারিক এই সীমাবদ্ধতা যদিও এটা কাছাকাছি পেতে সম্ভব :
উইন্ডোজ এপিআইয়ের অনেকগুলি ফাংশন রয়েছে যার সর্বাধিক মোট 32,767 অক্ষরের দৈর্ঘ্যের দৈর্ঘ্যের জন্য বর্ধিত দৈর্ঘ্যের পাথের অনুমতি দেওয়ার জন্য ইউনিকোড সংস্করণও রয়েছে। এই ধরণের পথটি ব্যাকস্ল্যাশ দ্বারা পৃথক করা উপাদানগুলির সমন্বয়ে গঠিত হয়, প্রতিটি ফাংশনের lpMaximumComponentLength
প্যারামিটারে ফিরে আসা মান পর্যন্ত GetVolumeInformation
(এই মানটি সাধারণত 255 অক্ষর হয়)। একটি বর্ধিত দৈর্ঘ্যের পাথ নির্দিষ্ট করতে, "\\? \" উপসর্গটি ব্যবহার করুন। উদাহরণস্বরূপ, "\\?। D: long খুব দীর্ঘ পথ "।
দুর্ভাগ্যক্রমে, আপনি কেবল \\?\D:\very long path
এক্সপ্লোরার উইন্ডোতে টাইপ করতে পারবেন না । অ্যাপ্লিকেশনগুলি অবশ্যই এই এপিআইগুলির সুবিধা নেওয়ার জন্য এবং খুব দীর্ঘ পথের নামগুলি হ্যান্ডেল করার জন্য ডিজাইন করা উচিত।
উইন্ডোজের আওতায় বর্ধিত দৈর্ঘ্যের পাথ অ্যাক্সেস করার একটি উপায় হ'ল উইন্ডোজের জন্য একটি * নিক্স এমুলেশন স্তর সাইগউইন ইনস্টল করা । আমার পরীক্ষায় সাইগউইন সীমাবদ্ধ বলে মনে হয় না MAX_PATH
; 2000 অক্ষর দীর্ঘ দীর্ঘ পথে বাশ এবং ভিআইয়ের কোনও সমস্যা ছিল না।
মনে রাখবেন যে আপনি বর্ধিত দৈর্ঘ্যের পাথগুলি ব্রাউজ করতে ব্যাশ ব্যবহার করতে পারেন, আপনি সম্ভবত নিয়মিত উইন্ডোজ অ্যাপ্লিকেশনগুলিতে সেই পাথগুলিতে ফাইলগুলি খুলতে পারবেন না। উদাহরণস্বরূপ, notepad
ওয়ার্কিং ডিরেক্টরিটি বর্ধিত দৈর্ঘ্যের পাথের সময় টাইপ করা আপনাকে পায়
ত্রুটি: বর্তমান কার্যনির্বাহী ডিরেক্টরিটির একটি উইন 32 ওয়ার্কিং ডিরেক্টরিের জন্য অনুমোদিত চেয়ে দীর্ঘ পথ রয়েছে। এখান থেকে নেটিভ উইন্ডোজ অ্যাপ্লিকেশন শুরু করতে পারেন না।
এবং চেষ্টাও notepad "\\?\D:\very long path\file.txt"
কাজ করে না; এটি চালু হয়, তবে কেবল "ফাইলটি খুঁজে পাচ্ছে না ..." বলে নোটপ্যাড ++ দিয়ে একই চেষ্টা করে এটি ক্র্যাশ হয়ে যায়। (সম্ভবত একটি বাফার ওভারফ্লো।)
প্রসারিত দৈর্ঘ্যের পাথের মধ্যে গভীরভাবে সমাহিত করা নির্দিষ্ট ফাইলগুলিতে অ্যাক্সেস করার জন্য আপনার অন্যান্য বিকল্পটি এনটিএফএস জংশন পয়েন্ট তৈরি করে পাথটি ছোট করা । একটি উন্নত কমান্ড প্রম্পট থেকে:
D:\> mklink /J jct "\\?\D:\very\long\path"
আপনি এখন D:\very\long\path\
থেকে সামগ্রীতে অ্যাক্সেস করতে পারেন D:\jct\
। আপনি কোনও পাথ দৈর্ঘ্যের সমস্যাগুলিকে আঘাত করতে পারবেন না কারণ এক্সপ্লোরার এবং অন্যান্য অ্যাপ্লিকেশনগুলির হিসাবে, পথটি কেবল D:\jct\
(বা যাই হোক না কেন)। এনটিএফএস ড্রাইভারটি স্বচ্ছভাবে পথটিকে পুনর্নির্দেশের পরিচালনা করে ("রিপার্স পয়েন্ট")।
এই পদ্ধতির খারাপ দিকটি স্পষ্টতই আপনি যে ফাইলটি অ্যাক্সেস করতে চান তার কাছে আপনাকে একটি জংশন তৈরি করতে হবে; আপনি এখনও পুরো ডিরেক্টরি কাঠামো সহজভাবে ব্রাউজ করতে পারবেন না।
বিশেষ চরিত্রগুলি ( " * : < > ? \ |
) সম্পর্কিত, এটি কেবল অচল। এই অক্ষরগুলির উইন্ডোজের মধ্যে বিশেষ অর্থ রয়েছে, সুতরাং এগুলি পাথের মধ্যে ব্যবহার করা সম্ভব নয়। (সাইগউইন আপনাকে বিশেষ অক্ষর দিয়ে ফাইল তৈরি করতে দেয় তবে এটি বিশেষ ইউনিকোড অক্ষরগুলির সাহায্যে অক্ষরগুলি প্রতিস্থাপন করে যা এটি পড়ার পরে ফিরে আসে when লিনাক্সের অধীনে বা এক্সপ্লোরার-এ এই সাইগউইন-নির্মিত ফাইলগুলি দেখা ঠিক মনে হবে না, কারণ ইউনিকোডের অক্ষরগুলি আবার প্রতিস্থাপন করা হবে না would)
এই সমস্ত বলেছিল, আপনি কি করছেন যে খুব দীর্ঘ পথ প্রয়োজন? আপনি যা করছেন তা পুনরায় মূল্যায়ন করে এবং দীর্ঘ পথ এড়িয়ে আপনি আপনার জীবনকে আরও সহজ করে তুলতে পারেন। সম্ভাবনাগুলি হ'ল, আপনার আর কোনও দীর্ঘ পথ দরকার নেই ।