เหตุใดจึงไม่สามารถตั้งชื่อโฟลเดอร์“ ._.” ใน Windows 7 ได้


74

ฉันเพิ่งสังเกตเห็นว่าไม่สามารถตั้งชื่อโฟลเดอร์._.- ได้รับการตั้งชื่อ._แทน บางครั้งมันจะหายไปหลังจากตั้งชื่อ แต่จะปรากฏขึ้นอีกครั้งหลังจากรีเฟรชมุมมอง Windows ดูเหมือนจะมีปัญหากับจุดในตอนท้ายของชื่อไฟล์ - ทำไมจึงเป็นเช่นนั้น


21
น่าสังเกตว่าคุณเจอ"แฮ็ค"ในการเริ่มต้นชื่อไฟล์ด้วย.ใน Windows
jpmc26

8
@ThisNameBetterBeAvailable ยังไม่ทดลอง แต่cd -- -_-อาจใช้งานได้ --เป็นเรื่องธรรมดา "ในตอนท้ายของตัวเลือก" เครื่องหมาย
TripeHound

13
@ThisNameBetterBeAvailable ไม่--ตามความหมายของตัวเอง " นี่คือจุดสิ้นสุดของตัวเลือกให้ถือว่าสิ่งใดก็ตามที่เริ่มต้นด้วย-ค่าตัวอักษร " เพิ่งทดสอบ: mkdir -- -_-และcd -- -_-ทำงานตามที่ฉันคาดไว้
TripeHound

2
หรือ./-_-ควรทำงานเช่นกัน
glglgl

5
@Alexander ใน linux เนื่องจากดูเหมือนว่าเป็นที่ที่ความคิดเห็นสำหรับcd "-_-"เชลล์ใช้เครื่องหมายคำพูดสำหรับการจัดกลุ่ม แต่ไม่ถือว่าพวกเขาเป็นส่วนหนึ่งของการโต้แย้ง ข้อผิดพลาดกับinvalid option
Izkata

คำตอบ:


123

โดยปกติแล้ว Windows ต้องการไฟล์ที่จะไม่มีนามสกุลหรือนามสกุลที่ยาวอย่างน้อยหนึ่งตัว มันไม่เย็นที่มีส่วนขยายความยาวเป็นศูนย์, .ชื่อไฟล์เช่นที่ลงท้ายด้วย โฟลเดอร์สามารถมีส่วนขยายเกินไปดังนั้น Windows .ไม่ได้ให้ท้ายชื่อของพวกเขาด้วย แหล่งที่มาจากบทความที่ DavidPostill เชื่อมโยง :

ใช้ระยะเวลาในการแยกชื่อไฟล์ฐานจากการขยายในชื่อของที่ไดเรกทอรีหรือแฟ้ม

(เน้นที่เหมือง) หากคุณพยายามจบไฟล์หรือไดเรกทอรีที่มีระยะเวลา Windows จะถือว่าคุณไม่ต้องการส่วนขยายดังนั้นจึงลบออกแม้ว่าคุณจะสร้างมันขึ้นmdในพรอมต์คำสั่งก็ตาม

พื้นที่อันตราย! ถ้าคุณต้องการชื่อโฟลเดอร์จะจบลงด้วย direly คุณจะต้องใช้เวทมนตร์ลำดับชื่อดิบแทนที่. \\?\ในพรอมต์คำสั่งmd \\?\C:\path\to\container\._.แน่นอนจะสร้างชื่อโฟลเดอร์._.แต่โปรแกรมจำนวนมากจะมีปัญหากับมันแม้แต่ Explorer:

._  ปัญหาที่เกิดขึ้น

ไดเรกทอรีดังกล่าวสามารถลบได้rdตามด้วย\\?\ชื่อหรือเปลี่ยนชื่อด้วยชื่อย่อ (8.3, dir /x)


1
ขอบคุณสำหรับคำตอบโดยละเอียดของคุณ! :) ฉันคิดว่านี่เป็นโฟลเดอร์ที่สมบูรณ์แบบสำหรับการซ่อนสิ่งที่เป็นความลับเช่นรหัสผ่านไว้ในนั้นเพราะคุณสามารถเปิดโฟลเดอร์ได้เฉพาะเมื่อคุณเปลี่ยนชื่อก่อนและทุกคนไม่ทราบวิธีการเปลี่ยนชื่อ
Black

19
@EdwardBlack มันจะไม่หยุดใครก็ตามที่สามารถอ่าน stack exchange (และดังนั้น wouldn; t แม้จะให้ความปลอดภัยกับน้องชายตัวน้อยสมมุติ) ชื่อที่กำหนดโดยdir /xทำให้ค่อนข้างง่ายและมีบางครั้งชื่อนี้มีประโยชน์
Chris H

11
FWIW เครื่องมือบรรทัดคำสั่งของ Cygwin สามารถสร้าง (และจัดการ) ไดเรกทอรีดังกล่าวใน Windows 7 ได้โดยไม่ต้องใช้ลำดับมายากล
Steve Jessop

4
@EdwardBlack ดังที่ Chris H พูดถึงมันไม่ได้เป็นความลับมากนักดังนั้นคุณไม่ควรเก็บอะไรที่มีความสำคัญเป็นพิเศษไว้ในโฟลเดอร์ ยิ่งกว่านั้นความลับและการป้องกันดิจิทัลเป็นปัญหาที่ได้รับการแก้ไขหลายต่อหลายครั้ง คุณสามารถใช้วิธีการเข้ารหัสและโปรแกรมต่าง ๆ เพื่อรักษาความปลอดภัยโดยไม่ต้องพึ่งพาชื่อโฟลเดอร์ที่คลุมเครือ
Kris Harper

3
Nitpick: อย่างน้อยใน 8.3 วัน (ฉันไม่ได้ตรวจสอบสิ่งที่เขียนลงดิสก์ใน NTFS) ระยะเวลานั้นไม่เคยถูกเขียนลงดิสก์ในตอนแรก ชื่อถูกแบ่งออกเป็นชื่อและส่วนขยายโดยจัดเก็บแยกกัน เมื่ออ่านมันใช้ชื่อและถ้ามีส่วนขยายเพิ่มระยะเวลาและนามสกุลไปยังชื่อ ดังนั้นจึงไม่มีวิธีที่จะแสดง. _ ในโครงสร้างไดเรกทอรีแน่นอนว่าคุณสูญเสียจุดต่อท้าย
Loren Pechtel

22

Windows ดูเหมือนจะมีปัญหากับจุดในตอนท้ายของชื่อไฟล์หรือไม่? ทำไมนี้

อย่าปิดชื่อไฟล์หรือไดเรกทอรีด้วยช่องว่างหรือจุด แม้ว่าระบบไฟล์พื้นฐานอาจรองรับชื่อดังกล่าวเชลล์ Windows และส่วนต่อประสานผู้ใช้จะไม่

ลิงค์แหล่งข้อมูลด้านล่างจะกล่าวถึงรายละเอียดเพิ่มเติมเกี่ยวกับกฎการตั้งชื่อ

ไฟล์การตั้งชื่อซอร์ส, พา ธ และเนมสเปซ


5
นี่ยังฟังดูเหมือนเป็นข้อบกพร่องสำหรับฉัน
ralu

@ralu ถ้ามันเป็นบั๊กแล้ว MS ก็ดูเหมือนจะไม่สนใจเลยในการแก้ไข ข้อ จำกัด เหล่านั้นมีมาตั้งแต่ Windows XP (หากไม่ใช่ก่อนหน้านี้)
DavidPostill

Windows XP ฉันเดาว่าข้อ จำกัด เหล่านี้มีรากอยู่ใน MS-DOS 0.x - ขอให้คุณเกทส์แจกแจงปัญหา ...
Christian Severin

17

มันไม่ใช่ข้อผิดพลาด เป็นการออกแบบเพื่อป้องกันปัญหาความเข้ากันได้
มันเป็นของเหลือจากวันดอสเก่า

ระบบไฟล์ FAT12 (ฟลอปปี้) และ FAT16 (FAT16 ก่อนการสนับสนุนชื่อไฟล์แบบยาวที่แนะนำใน Windows 95) มีชื่อไฟล์ที่จัดเก็บใน 11 ไบต์:
8 ไบต์สำหรับชื่อ 3 สำหรับการขยาย "จุด" ระหว่างชื่อและส่วนขยายไม่ได้เก็บไว้ มันถูกบอกเป็นนัยและเพิ่มโดยอัตโนมัติเพื่อการแสดงผล
ไดเรกทอรีไม่มีส่วนขยายเลย แทน 3 ไบต์สำหรับส่วนขยายที่เต็มไปด้วยอักขระ "$" (ซึ่งผิดกฎหมายในชื่อจริง)
เนื่องจาก Windows ยังคงเข้ากันได้กับ Explorer นี้และส่วนประกอบอื่น ๆ ของ Windows ทำให้ช่วงเวลาการติดตามเงียบหายไปเพื่อป้องกันการสร้างปัญหาความเข้ากันได้
ตามที่คนอื่นได้ระบุไว้คุณสามารถจัดการโฟลเดอร์ดังกล่าวได้จริงโดยใช้ซีแมนทิกส์ RAW (\\? \ คำนำหน้าหน้าชื่อพา ธ สัมบูรณ์)
เบื้องหลังระบบไฟล์ NTFS และระบบเครือข่ายไม่มีปัญหากับไฟล์และโฟลเดอร์ดังกล่าว เป็นเพียงกรณีของ Explorer ที่พยายามป้องกันไม่ให้ผู้ใช้สร้างบางสิ่งที่อาจทำให้เกิดปัญหากับซอฟต์แวร์อื่น

(ในความเป็นจริงมีบางอย่างที่เหลือเหลืออีกด้วย:
ชื่อไฟล์เช่น COM, COM1, COM2, AUX, PRN, LPT, LPT1, LPT2, LPT3, LPT3, CON สามารถทำให้เกิดปัญหาที่คล้ายกันที่ Explorer และส่วนอื่น ๆ ของ Windows สับสนทั้งหมด เพราะชื่อเหล่านี้เป็นชื่อ "สงวน" ซึ่งย้อนกลับไปตั้งแต่สมัยดอส)


3
ให้กับผู้อ่านอื่น ๆ ที่อยู่ในขั้นต้นไม่เชื่อในเรื่องการจุดไม่ได้ถูกเก็บไว้: ที่ถูกต้องสำหรับ CP / M และทุกรุ่นของไขมันรวมทั้งFAT16และFAT32
Ben N

1
ฉันจำบางโปรแกรม DOS เก่า (ทำงานบนจริง DOS อาจใช้ฟังก์ชัน INT13 โดยตรง) ให้ฉันเสียใจจริง ๆ โดยการจัดการเพื่อสร้างไฟล์ชื่อ a: foo.bar บน c: ไดรฟ์ ...
rackandboneman

2
@BNN: จริง ๆ แล้วใน FAT32 มันแตกต่างกันเล็กน้อย มันเก็บทั้งชื่อไฟล์สั้น ๆ (8 + 3 ไบต์ด้วยชื่อที่เข้ากันได้ "implicit dot") บวกกับชื่อไฟล์ยาว (เรียกว่า LFN) ซึ่งประกอบด้วยอักขระ UCS-2 ถึง 255 ตัวพร้อมจุดที่ชัดเจนและยกเว้น คุณกำลังทำงานกับแอปพลิเคชั่น 16 บิตคุณจะทำงานกับ LFN เสมอ
Matteo Italia

1
@MatteoItalia ฉันเข้าใจว่าชื่อไฟล์แบบยาวจะถูกเก็บไว้ในรายการไฟล์ faux การติดตั้ง Windows ที่รู้จะค้นหารายการเหล่านี้และแสดงแทน SFN ถ้าเป็นไปได้ ดูโพสต์ของเรย์มอนด์เฉินในหัวข้อหรือส่วน VFAT ของข้อมูลจำเพาะฟอร์แมต FAT32 ที่ฉันลิงก์ไว้ด้านบน
เบ็น N

1
-1 คุณผิดเกี่ยวกับส่วนขยายไดเรกทอรี อาจเป็นเรื่องจริงสำหรับ CP / M (หน่วยความจำของฉันเส็งเคร็งเกี่ยวกับระบบปฏิบัติการนั้น) แต่ฉันใช้ไดเรกทอรี "programm.ing" ในต้นไม้ของฉันมาตั้งแต่สมัยดอสและดูwin.tue.nl/~aeb/linux/ fs / fat / fat-1.html - รายการไดเรกทอรีได้รับการจัดการเหมือนกับไฟล์โดยสามารถมีชื่อได้ 8.3 ทดสอบ: สร้างไดเรกทอรี 8.3 ( mkdir testfile.name) และแสดงชื่อ DOS ใน Windows ( dir /x) - คุณจะได้รับTESTFI~1.NAMตามที่คาดไว้
vaxquis

3

ปัญหาที่นี่คือ Windows (DOS) อนุญาตให้ใช้ชื่อไฟล์ 8.3 บนระบบไฟล์ FAT ความหมาย 8 ตัวอักษรตามด้วย ตามด้วยอักขระสามตัว Unix และ Linux อนุญาตสำหรับอักขระใด ๆ ยกเว้น / และ \ 0 \ 0 เป็นตัวสิ้นสุดสตริงอักขระ C และ / เป็นตัวคั่นไดเรกทอรี สามารถใช้ทุกอย่างอื่นได้

Windows 95 มีปัญหานี้โดยการรักษาฐานข้อมูลชื่อไฟล์สั้น (8.3) ไปยัง meta-data ชื่อไฟล์ยาว (LFN) หากคุณเช็ดไฟล์ Windows 95 OS คุณจะเหลือไฟล์ที่มีชื่อแปลก ๆ ไว้ในดิสก์ในการติดตั้ง Windows 95 ครั้งต่อไปของคุณ ตัวอย่างเช่น "My Documents" อาจมีชื่อว่า MYDOCU ~ 1 บนดิสก์ เห็นได้ชัดว่าถ้าคุณสูญเสียข้อมูลเมตาคุณจะไม่สามารถแปลงข้อมูลเหล่านี้ได้อย่างง่ายดาย

เชลล์ต้องรับมือกับการเพิ่มขึ้นทางประวัติศาสตร์มากมายที่เกิดขึ้นตั้งแต่วันที่ MS-DOS

หวังว่านี่จะช่วยได้


1
ไม่มีฐานข้อมูลต่อจริง ๆ ; Windows ติดขัดบางส่วนของชื่อไฟล์แบบยาวลงบนดิสก์เป็นไฟล์มารยาท ดูโพสต์เรย์มอนด์ของเฉินในเรื่อง
Ben N
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.