พฤติกรรมที่คาดหวังเริ่มต้นคืออะไรเมื่อ Windows พบไฟล์สองไฟล์ที่มีชื่อเหมือนกัน แต่ใช้อักษรตัวพิมพ์ใหญ่ต่างกันในพาร์ติชัน NTFS


16

เป็นเรื่องง่ายที่จะเขียนสองไฟล์ไปยังพาร์ติชัน NTFS จาก Linux และมีทั้งสองไฟล์นั้นมีตัวอักษรเหมือนกัน แต่มีตัวพิมพ์เล็กและตัวพิมพ์เล็กเช่น some_file.txt และ Some_File.txt Linux แยกความแตกต่าง

Windows จัดการกับสิ่งเหล่านี้อย่างไร


1
โดยส่วนตัวแล้วด้วยปัจจัยทั้งหมดที่เกี่ยวข้องฉันแค่บอกว่ามันทำให้เกิดพฤติกรรมที่ไม่ได้กำหนด หาก Windows ไม่ได้กำหนดลักษณะการทำงานในกรณีนี้ตามนิยามจะไม่ได้กำหนดไว้ ถ้า Windows ไม่กำหนดพฤติกรรมที่ฉันจะยังคงรักษามันเป็นพฤติกรรมที่ไม่ได้กำหนดเพราะฉันอย่างจริงจังสงสัยว่าทุกโปรแกรมจัดการนี้อย่างต่อเนื่อง
jpfx1342

คำตอบ:


20

บุคลิกของ MS-DOS, WOW และ Win32 จะส่งคืนไฟล์แรกที่ตรงกัน สำหรับการใช้งานบางอย่างและ API CASE- ไม่รู้สึกถูกบังคับใช้ (เช่น MS-DOS ก็ไม่สามารถจัดการกับมัน) บุคลิกภาพของ POSIX จะแยกความแตกต่างและคำนึงถึงขนาดตัวพิมพ์เป็นค่าเริ่มต้น (ถ้าคุณติดตั้งเครื่องมือ UNIX ไว้) พรอมต์คำสั่งดั้งเดิมของ Windows NT จะแสดงทั้งสองขึ้นอยู่กับการตั้งค่า (ObCaseInsensitive) และ APIs ที่เครื่องมือใช้เข้าถึงเฉพาะอันแรกที่พบ

ดูบทความ Microsoft Technet ชื่อไฟล์เป็น Case Sensitive ใน NTFS เล่ม (KB100625)และยังมีการอภิปรายรายละเอียดเกี่ยวกับรายละเอียดปลีกย่อยของ case sensitive ในระบบย่อย NT ต่าง ๆ : ทำความเข้าใจเกี่ยวกับ case sensitive ใน Windows: obcaseinsensitive, FILE_CASE_SENSITIVE_SEARCH

โดยเฉพาะอย่างยิ่งค่าObCaseInsensitiveจะควบคุมความอ่อนไหวของตัวจัดการวัตถุ NT ทั้งหมด:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive
  • เมื่อตั้งค่าเป็น 0 ตัวจัดการวัตถุจะทำงานในโหมดที่เล็กและใหญ่
  • เมื่อตั้งค่าเป็น 1 ตัวจัดการวัตถุจะทำงานในโหมดที่ไม่ตอบสนองต่อตัวพิมพ์ใหญ่ - เล็ก
  • เมื่อไม่ได้ระบุ NT 5.1 (Windows XP) และรุ่นที่ใหม่กว่าจะเริ่มต้นทำงานในโหมดที่ไม่ตอบสนองต่อตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • obcaseinsensitive ไม่มีความหมายใน NT 5.0 (Windows 2000) และ NT รุ่นก่อนหน้าซึ่งจะทำงานในโหมดที่เล็กและใหญ่

Cygwin ควรเลือกการตั้งค่าความไวตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ที่มีประสิทธิภาพ ณ จุดนี้

คำถาม SuperUser ที่เกี่ยวข้องวิธีกำหนดค่าความไวของชื่อโฟลเดอร์ใน Windows 7 ได้อย่างไร? และบทความ TechNet กำหนดค่าความไวของตัวพิมพ์เล็กสำหรับชื่อไฟล์และโฟลเดอร์มีข้อมูลเพิ่มเติมเกี่ยวกับการเปิดใช้งานความไวตัวพิมพ์เล็กสำหรับไฟล์และโฟลเดอร์ใน NT หากคุณจำเป็นต้องจัดการกับสถานการณ์นี้เป็นประจำ

แหล่งข้อมูลเพิ่มเติมเกี่ยวกับการใช้เครื่องมือ / การเข้าถึงไดรฟ์ข้อมูล NTFS / NFS


หากมีสองไฟล์ One.txt และ ONE.txt ไฟล์ใดที่จะ "จับคู่เป็นอันดับแรก" ถ้าฉันระบุ one.txt มีกฎว่าจะเป็น "ไฟล์จับคู่แรก" หรือไม่?
trusktr

1
อาจเป็นไปตามลำดับของไฟล์ภายในในไดเรกทอรี ฉันจะลองพรุ่งนี้ถ้าคุณอยากรู้
Daniel B

2
คำสั่งใดที่จะได้รับการพิจารณาก่อนโดยลำดับที่ปรากฏในไดเรกทอรี นี่ไม่จำเป็นต้องเป็นคำสั่งที่พวกเขาสร้างขึ้น และมันอาจเปลี่ยนแปลงได้หากไฟล์ใดไฟล์หนึ่งถูกแก้ไขหรือมีการอัพเดท directoy (Chkdsk, Defrag, การลบ, การคัดลอกย้ายไฟล์ในโฟลเดอร์อื่น ๆ ที่ทุกคนสามารถเปลี่ยนลำดับ.)
Tonny

1
@trusktr เอาละเห็นได้ชัดว่ามีคำสั่งบางอย่างหลังจากทั้งหมด ฉันสร้างไฟล์หลายชุด (โดยใช้ NTFS-3G) โดยแต่ละไฟล์มีตัวพิมพ์ใหญ่และคำสั่งต่างกัน Windows (หรืออย่างแม่นยำมากขึ้น Notepad) มักจะหยิบแฟ้มที่ขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่โดยไม่คำนึงถึงเพื่อสร้าง moreเพียงแค่ส่งคืนเครื่องหมายคำถาม
Daniel B

1
@trusktr มันจะทำตามคำสั่งของรายการ INDX ของไดเรกทอรี B + ของไดเรกทอรี แผนผังนี้ถูกจัดเรียงตามการออกแบบ แต่อาจแตกต่างกันเล็กน้อยขึ้นอยู่กับไดรเวอร์ NTFS มันจะ (OnCaseInsensitive = 0, Win32 / DOS / WOW API) เป็นคู่แรกในขณะที่เดินทรี (เรียงลำดับ) ของชื่อที่ระบุและชื่อรายการ INDX NTFS ใช้การเปรียบเทียบตามลำดับดังนั้นควรพบตัวพิมพ์ใหญ่ก่อนตัวพิมพ์เล็กเสมอ (AZ = 0041-005A, az = 0061-007A)
Maxx Daymon

2

มันไม่ได้ มันพิจารณาความแตกต่างของตัวอักษร แต่ชื่อเดียวกันที่แน่นอนจะเป็นไฟล์เดียวกัน

คุณสามารถทดสอบสิ่งนี้ได้โดยการสร้างไฟล์ในตัวพิมพ์เล็กทั้งหมดจากนั้นสร้างอีกอันด้วยตัวอักษรตัวเดียวด้านบนและมันจะบ่น


ฉันไม่มีสภาพแวดล้อมที่จะทดสอบสิ่งนั้นในตอนนี้ ตอนนี้ฉันมี OS X เท่านั้น คุณช่วยอธิบายสิ่งที่เกิดขึ้นได้ไหม การเดาครั้งแรกของฉันคือ Windows เลือก (โดยไม่ตั้งใจ) ซึ่งไฟล์ที่จะอ่าน / เขียนตามเกณฑ์บางอย่าง (เช่นคำศัพท์ที่ใช้ตัวพิมพ์เล็กและตัวพิมพ์เล็กหรือในทางกลับกัน) หรือไม่อนุญาตให้มีการจัดการไฟล์ใด ๆ
trusktr

1
@trusktr ระบบบ่นว่าไฟล์มีอยู่แล้วขึ้นอยู่กับแอพพลิเคชั่นหรือรหัสที่เกี่ยวข้องซึ่งจะถูกละเว้นในทันทีและจะเขียนทับไฟล์ที่มีอยู่ก่อนหน้า ตามที่jpfx1342 แสดงความคิดเห็นปัญหานี้ควรถือเป็นพฤติกรรมที่ไม่ได้กำหนด
Casey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.