วิธีสร้างชื่อโฟลเดอร์หรือชื่อไฟล์ด้วยอักขระพิเศษเช่น \ /: * "<> | [ซ้ำ]


9

ปัญหาของฉันคือฉันไม่สามารถให้ชื่อโฟลเดอร์หรือไฟล์ที่มีอักขระพิเศษเช่น \ /: *? "<> | ในระบบปฏิบัติการที่ใช้ windows นี่เป็นสิ่งสำคัญมากสำหรับฉันที่ให้ชื่อไฟล์ / โฟลเดอร์ที่มีอักขระประเภทนี้

ฉันค้นหาและอ้างอิงไซต์จำนวนมากแล้วสำหรับปัญหานี้ แต่ทั้งหมดก็สิ้นหวัง ฉันยังอ่านหน้าสนับสนุนของ Microsoft พวกเขาแนะนำให้ใช้อักขระอื่น ๆ นี่คือลิงค์ของมันhttps://support.microsoft.com/en-us/kb/177506

ฉันได้ลองใช้ปุ่ม Alt + หมายเลขรหัส ASCII ของอักขระพิเศษประเภทนี้แล้วจากปุ่ม numpad เพียงแค่เปลี่ยนชื่อไฟล์ / โฟลเดอร์แล้วกด Alt + 60 (สำหรับ <ตัวอักษร) ยังให้ข้อความว่าชื่อไฟล์ไม่สามารถมีสิ่งใดต่อไปนี้ ตัวละคร: \ /: *? "<> |

แนะนำฉันวิธีแก้ปัญหาที่เหมาะสมเพื่อให้ฉันสามารถตั้งชื่อไฟล์ / โฟลเดอร์ของฉันด้วยอักขระพิเศษประเภทนี้


แค่อยากรู้อยากเห็น: คุณต้องการมันเพื่ออะไร?
Kamil Maciorowski

@ kamil นี่เป็นชื่อไฟล์ / โฟลเดอร์ของฉันและเป็นงานที่ท้าทายสำหรับฉัน
Kirit_Vanani

@ PIMP_JUICE_IT ฉันทำไปแล้ว (literalString -literalPath แต่ยังไม่ประสบความสำเร็จ
Kirit_Vanani

แม้ว่าคุณจะสามารถสร้างไฟล์ด้วยอักขระเหล่านี้จะไม่มีโปรแกรมใดสามารถเปิดหรือบันทึกได้
Keltari

10
- ฉันจะเลียข้อศอกของฉันได้อย่างไร - คุณทำไม่ได้ - แต่ฉันต้อง - คุณสามารถหักแขนและลอง แต่แขนของคุณจะไร้ประโยชน์แล้ว - ฉันไม่สนใจฉันแค่เลียข้อศอก
Kamil Maciorowski

คำตอบ:


16

สิ่งนี้สำคัญมากสำหรับฉันการตั้งชื่อไฟล์ / โฟลเดอร์ที่มีตัวอักษรเหล่านี้

อาจเป็นสิ่งสำคัญสำหรับคุณ แต่คุณจะต้องปล่อยวางและหาวิธีอื่นในการแก้ปัญหาของคุณ

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

ไม่ได้รับอนุญาตเป็นพิเศษเพราะมีประโยชน์อื่น:

  • \- สงวนไว้สำหรับใช้เป็นตัวคั่นพา ธ และอักขระยกเว้น
  • / - สงวนไว้สำหรับใช้เป็นตัวคั่นพา ธ
  • : - สงวนไว้สำหรับใช้เป็นตัวคั่นชื่อไดรฟ์
  • *และ?- สงวนไว้สำหรับใช้เป็นสัญลักษณ์แทนตัวอักษร
  • "- สงวนไว้สำหรับใช้อ้างอิงชื่อที่มีช่องว่าง
  • <, >และ|- สงวนไว้สำหรับใช้เป็นตัวดำเนินการเปลี่ยนเส้นทางคำสั่ง

แน่นอนคุณสามารถสร้างไฟล์ที่มีชื่อที่มีอักขระเหล่านี้โดยใช้ระบบปฏิบัติการที่แตกต่างกัน (ตราบเท่าที่ระบบปฏิบัติการนั้นสามารถอ่าน / เขียนระบบไฟล์ Windows)

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


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

อนุสัญญาการตั้งชื่อ

กฎพื้นฐานต่อไปนี้เปิดใช้งานแอปพลิเคชันเพื่อสร้างและประมวลผลชื่อที่ถูกต้องสำหรับไฟล์และไดเรกทอรีโดยไม่คำนึงถึงระบบไฟล์:

...

ใช้อักขระใด ๆ ในหน้ารหัสปัจจุบันสำหรับชื่อรวมถึงอักขระ Unicode และตัวอักษรในชุดอักขระแบบขยาย (128–255) ยกเว้นตัวต่อไปนี้:

  • ตัวละครที่สงวนไว้ดังต่อไปนี้:

    < (less than)
    > (greater than)
    : (colon)
    " (double quote)
    / (forward slash)
    \ (backslash)
    | (vertical bar or pipe)
    ? (question mark)
    * (asterisk)
    
  • จำนวนเต็มเป็นศูนย์บางครั้งเรียกว่าอักขระ ASCII NUL
  • อักขระที่มีการแทนค่าจำนวนเต็มอยู่ในช่วงตั้งแต่ 1 ถึง 31 ยกเว้นสตรีมข้อมูลสำรองที่อนุญาตให้ใช้อักขระเหล่านี้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสตรีมไฟล์ดูที่สตรีมไฟล์
  • อักขระอื่นใดที่ระบบไฟล์เป้าหมายไม่อนุญาต

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


แต่ฉันต้องการทำสิ่งนี้จริงๆ

ติดตั้งCygwintouchและการใช้งาน

ฉันยังไม่ได้ทดสอบความเป็นไปได้ทั้งหมดยกเว้นงานต่อไปนี้:

touch :
touch \|
touch \"
touch \>

ตัวอย่างผลลัพธ์:

DavidPostill@Hal /f/test/impossible
$ ll
total 0
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:03 '"'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 :
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 '|'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:07 '>'

อย่างที่คุณเห็นว่ามันไม่สามารถใช้งานได้ใน Windows:

F:\test\impossible>dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\impossible

10/08/2016  21:07    <DIR>          .
10/08/2016  21:07    <DIR>          ..
10/08/2016  21:03                 0 
10/08/2016  21:02                 0 
10/08/2016  21:07                 0 
10/08/2016  21:02                 0 
               4 File(s)              0 bytes
               2 Dir(s)  1,772,601,536,512 bytes free

ป้อนคำอธิบายรูปภาพที่นี่


ฉันขอขอบคุณคำตอบของคุณมันมีประโยชน์เล็กน้อย แต่ปัญหาของฉันยังคงเหมือนเดิม .. ฉันคิดว่าผู้ใช้ขั้นสูงคนอื่นจะเปลี่ยนชื่อด้วยอักขระพิเศษเหล่านี้
Kirit_Vanani

2
@Kirit คุณสามารถสร้างไฟล์ด้วยตัวละครเหล่านั้น แต่ Windows ไม่สามารถทำอะไรกับพวกเขาได้และคุณจะได้รับข้อผิดพลาดเมื่อคุณลองและใช้ไฟล์เหล่านั้นจากภายใน Windows
DavidPostill

@ DavidPostill Ohh วิธีสร้างชื่อไฟล์ด้วยตัวละครเหล่านั้น ฉันไม่รังเกียจถ้ามันมีข้อผิดพลาด แต่ตอนนี้งานคือให้ชื่อตัวละครประเภทนี้ .. สำหรับการเข้าถึงไฟล์นี้ฉันจะใช้ระบบปฏิบัติการ Linux อื่น ๆ
Kirit_Vanani

1
@ Kirit ฉันได้บอกคุณแล้วในคำตอบ "แน่นอนคุณสามารถสร้างไฟล์ที่มีชื่อที่มีตัวอักษรเหล่านี้โดยใช้ระบบปฏิบัติการที่แตกต่างกัน (ตราบใดที่ระบบปฏิบัติการนั้นสามารถอ่าน / เขียนระบบไฟล์ Windows)"
DavidPostill

3
@Kirit ฉันบอกคุณแล้วว่ามันเป็นไปไม่ได้
DavidPostill

3

สร้างชุดแบบอักษรของคุณเอง แทนที่อักขระบางตัวที่คุณไม่ได้ใช้กับรูปภาพของอักขระที่สงวนไว้


1
หรือใช้ตัวละครที่คล้ายกัน ด้วย Unicode ทุกสิ่งเป็นไปได้ 🎃
Daniel B

@ Craig620 อาจเป็นไปไม่ได้สำหรับฉัน สามารถให้คำแนะนำกับฉัน
Kirit_Vanani

ไม่แน่ใจว่าเป็นเพียงความคิดที่บ้าคลั่งที่มาถึงใจ อาจมีฟอรัมแลกเปลี่ยนแลกเปลี่ยนสำหรับการพิมพ์หรือการเผยแพร่ที่คุณสามารถถามได้?
Clayton

2

ใน Windows คุณไม่สามารถสร้างไฟล์ด้วยอักขระเหล่านั้น ไม่มีวิธีแก้ปัญหาตัวอักษรเหล่านี้เป็นสิ่งต้องห้ามโดย Win32 API

Win32 เป็นส่วนย่อยของเนมสเปซ POSIX และไม่คำนึงถึงขนาดตัวพิมพ์ มันใช้อักขระ Unicode ทั้งหมดยกเว้น: '' '' * '' / '': '' <''> ''? ' '\' '|' ชื่อ NB ไม่สามารถลงท้ายด้วย Dot '.' หรือ Space ''

- http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf


NTFS ไม่ใช่ปัญหา (ในความเป็นจริงมันช่วยให้ตัวละครเหล่านี้ใช้ได้ - ต้องมีเพื่อรองรับ Interix) ปัญหาคือ Windows เองนั่นคือข้อ จำกัด ถูกกำหนดโดย Win32 APIs ไม่ว่า FS นั้นจะอยู่ที่ใด
user1686

@grawity ดูเหมือนว่าคุณจะถูกต้องตามการสืบสวนต่อไปของฉัน ฉันได้แก้ไขคำตอบของฉันเพื่อสะท้อนสิ่งนี้
ChrisInEdmonton

ฉันคิดว่า NTFS ไม่ใช่ปัญหา มันจะต้องมีทางออก เมื่อฉันเข้าถึงไดรฟ์ NTFS จากระบบปฏิบัติการที่ใช้ Linux มากกว่าที่เป็นฉันสามารถพิมพ์อักขระประเภทนี้ได้
Kirit_Vanani

"ชื่อไม่สามารถลงท้ายด้วย Dot" ไม่ถูกต้อง คุณสามารถตั้งชื่อไฟล์ที่ลงท้าย.ด้วย คุณไม่สามารถทำอะไรกับพวกเขาจากcmd:)
DavidPostill

1
@Kirit คุณได้รับการบอกหลายครั้งว่ามันเป็นไปไม่ได้
DavidPostill
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.