เปิดใช้งานโหมดตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สำหรับโฟลเดอร์ใน Windows 10
ตามที่คุณอาจทราบแล้ว ระบบไฟล์ Windows, NTFS จะถือว่าชื่อไฟล์และโฟลเดอร์เป็นแบบไม่คำนึงถึงขนาดตัวพิมพ์ ตัวอย่างเช่น สำหรับระบบปฏิบัติการและแอป MyFile.txt และ myfile.txt เป็นไฟล์เดียวกัน อย่างไรก็ตาม สิ่งต่าง ๆ ใน Linux สำหรับระบบปฏิบัติการนี้ ไฟล์เหล่านี้เป็นไฟล์สองไฟล์ที่แตกต่างกัน ลักษณะการทำงานที่แตกต่างกันนี้อาจสร้างปัญหาให้กับผู้ใช้ WSL ในการแก้ไขปัญหาเหล่านี้ Windows 10 ได้รวมความสามารถในการเปิดใช้งานโหมดที่คำนึงถึงขนาดตัวพิมพ์สำหรับโฟลเดอร์
โฆษณา
หากคุณเคยใช้ ระบบย่อย Windows สำหรับ Linuxคุณคงทราบดีอยู่แล้วว่ามันช่วยให้คุณสามารถจัดการกับระบบไฟล์ Windows ของคุณ (ติดตั้งภายใต้ /mnt/c, /mnt/d เป็นต้น) โดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งหมายความว่า คุณสามารถสร้างไฟล์ที่มีชื่อต่างกันตามตัวพิมพ์เท่านั้น (เช่น foo.txt และ FOO.TXT)
อย่างไรก็ตาม การใช้ไฟล์เหล่านั้นใน Windows ไม่สามารถทำได้จริงๆ เนื่องจากแอปพลิเคชัน Windows ถือว่าระบบไฟล์ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ จึงไม่สามารถแยกแยะระหว่างไฟล์ที่มีชื่อต่างกันในกรณีเท่านั้น แม้ว่า File Explorer จะแสดงทั้งสองไฟล์ แต่จะเปิดได้เพียงไฟล์เดียวไม่ว่าคุณจะคลิกไฟล์ใด
เริ่มต้นด้วย Windows Insider build 17093 มีวิธีใหม่ในการจัดการไฟล์ที่มีความละเอียดอ่อนใน Windows: ความไวของตัวพิมพ์ต่อไดเร็กทอรี เพิ่มความสามารถนี้เพื่อให้ผู้ใช้ทำงานร่วมกันได้ดียิ่งขึ้นเมื่อใช้ไฟล์ที่มีความละเอียดอ่อน นอกจากนี้คุณยังสามารถใช้กับแอปพลิเคชัน Windows ทั่วไปได้อีกด้วย เริ่มต้นใน Windows 10 Build 17110 ลักษณะการทำงานนี้เป็นค่าเริ่มต้น
รายละเอียดเพิ่มเติม
ความไวของตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ใน Windows
ระบบปฏิบัติการตระกูล Windows NT (รวมถึง Windows 10) มีความสามารถในการดำเนินการระบบไฟล์ที่คำนึงถึงขนาดตัวพิมพ์เสมอ แอปพลิเคชันสามารถผ่าน FILE_FLAG_POSIX_SEMANTICS
ธงไปที่ CreateFile
API เพื่อระบุว่าต้องการให้พาธได้รับการพิจารณาตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ อย่างไรก็ตาม ด้วยเหตุผลด้านความเข้ากันได้ มีคีย์รีจิสทรีส่วนกลางที่แทนที่ลักษณะการทำงานนี้ เมื่อตั้งค่าคีย์นี้ การทำงานของไฟล์ทั้งหมดจะไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แม้ว่าตัว FILE_FLAG_POSIX_SEMANTICS
มีการระบุแฟล็ก ตั้งแต่ Windows XP นี่เป็นค่าเริ่มต้น
ระบบย่อย Windows สำหรับ Linux ใช้กลไกอื่น ซึ่งจะข้ามรีจิสตรีคีย์นั้นเอง ทำให้เราสามารถดำเนินการระบบไฟล์ที่คำนึงถึงขนาดตัวพิมพ์ นี่คือสิ่งที่อนุญาตให้แอปพลิเคชัน Linux ที่ทำงานใน WSL ใช้ชื่อไฟล์ที่แตกต่างกันตามแต่ละกรณีเท่านั้น เช่นเดียวกับที่ทำได้บน Linux จริง แม้กระทั่งกับชุดคีย์รีจิสทรีส่วนกลางนั้น
น่าเสียดายที่สิ่งนี้ทำให้คุณมีไฟล์ที่แอพพลิเคชั่น Windows ไม่สามารถเข้าถึงได้ แม้ว่าคุณสามารถเปลี่ยนคีย์รีจิสทรีส่วนกลางได้ แต่จะยังใช้ได้เฉพาะกับแอปพลิเคชันที่ใช้ FILE_FLAG_POSIX_SEMANTICS
และสิ่งนี้จะเปลี่ยนลักษณะการทำงานสำหรับไฟล์ทั้งหมดในทุกไดรฟ์ ซึ่งอาจไม่ได้ตั้งใจและอาจทำลายแอปพลิเคชันบางตัว
ความไวของตัวพิมพ์ต่อไดเร็กทอรี
เพื่อแก้ปัญหานี้ Microsoft ได้เพิ่มแฟล็กที่คำนึงถึงขนาดตัวพิมพ์ใหม่ที่สามารถนำไปใช้กับไดเร็กทอรีได้ สำหรับไดเร็กทอรีที่มีการตั้งค่าแฟล็กนี้ การดำเนินการทั้งหมดบนไฟล์ในไดเร็กทอรีนั้นจะคำนึงถึงขนาดตัวพิมพ์ ไม่ว่า FILE_FLAG_POSIX_SEMANTICS
ถูกระบุ ซึ่งหมายความว่าถ้าคุณมีสองไฟล์ที่แตกต่างกันโดยตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ในไดเร็กทอรีที่ทำเครื่องหมายว่าตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แอปพลิเคชันทั้งหมดจะสามารถเข้าถึงได้
เปิดใช้งานโหมดตัวพิมพ์เล็กสำหรับโฟลเดอร์
หากต้องการเปิดหรือปิดใช้งานคุณลักษณะนี้ คุณควรใช้แอป fsutil.exe ในตัว
วิธีเปิดใช้งานโหมดตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สำหรับโฟลเดอร์ให้ทำดังต่อไปนี้
- เปิด พรอมต์คำสั่งที่ยกระดับ.
- พิมพ์คำสั่งต่อไปนี้:
ไฟล์ fsutil.exe เปิดใช้งาน setCaseSensitiveInfo "เส้นทางแบบเต็มไปยังโฟลเดอร์ของคุณ"
แทนที่ส่วนพาธด้วยพาธที่ถูกต้องซึ่งตรงกับพีซีของคุณ
ตัวอย่างเช่น,ไฟล์ fsutil.exe setCaseSensitiveInfo "C:\data\Winaero\Linux" เปิดใช้งาน
- คุณทำเสร็จแล้ว
ตอนนี้ คุณสามารถสร้างไฟล์สองไฟล์ที่มีชื่อเดียวกันและมีเพียงความแตกต่างของตัวพิมพ์เท่านั้น Windows 10 จะประมวลผลอย่างถูกต้องในโฟลเดอร์นี้โดยเฉพาะ
หากต้องการดูสถานะคุณสมบัติของโฟลเดอร์ ให้เรียกใช้คำสั่ง
ไฟล์ fsutil.exe queryCaseSensitiveInfo "เส้นทางแบบเต็มไปยังโฟลเดอร์ของคุณ"
ตัวอย่างเช่น,
ไฟล์ fsutil.exe queryCaseSensitiveInfo "C:\data\Winaero\Linux"
คุณจะเห็นสิ่งนี้:
ในที่สุด, เพื่อปิดใช้งานโหมดตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สำหรับโฟลเดอร์ให้รันคำสั่งถัดไปในพรอมต์คำสั่งที่เปิดในฐานะผู้ดูแลระบบ:
ไฟล์ fsutil.exe setCaseSensitiveInfo "C:\data\Winaero\Linux" ปิดใช้งาน
ใช้เส้นทางโฟลเดอร์ที่ถูกต้องและคุณทำเสร็จแล้ว
บันทึก: ไม่รองรับการปิดใช้งานแอตทริบิวต์ CaseSensitiveInfo สำหรับโฟลเดอร์ที่ไม่ว่างเปล่า คุณต้องลบไฟล์ทั้งหมดออกจากโฟลเดอร์ก่อนปิดใช้งาน
แค่นั้นแหละ.