หากคุณเคยเห็นปัญหานี้ มันอาจเป็นการแก้ไขง่ายๆ สำหรับคุณ หากคุณเห็นข้อผิดพลาดนี้มากกว่าสองครั้ง คุณก็รู้ว่ามันอาจเป็นปัญหาที่ซับซ้อนในการแก้ไขบางครั้ง
ลองหวังว่าคุณจะเจอแค่ประเภทที่แก้ง่าย แต่เราจะเตรียมคุณสำหรับการแก้ไขที่ยากกว่า แบบรับประกันได้ผลเช่นกัน
ทำไมความยาวชื่อไฟล์ถึงเป็นปัญหาใน Windows?
มีประวัติศาสตร์ยาวนานของความยาวชื่อไฟล์ที่เป็นปัญหาสำหรับระบบปฏิบัติการอย่าง Windows มีช่วงเวลาที่คุณไม่สามารถมีชื่อไฟล์ยาวกว่า 8 ตัวอักษรบวกกับนามสกุลไฟล์ 3 ตัวอักษร ได้ สิ่งดีที่สุดที่คุณทำได้คืออย่าง myresume.doc นี่คือข้อจำกัดที่วางไว้โดยการออกแบบของระบบไฟล์
สิ่งดีขึ้นเมื่อ Windows เวอร์ชันใหม่ๆ ออกมา เราเปลี่ยนจากระบบไฟล์เก่าที่จำกัด ไปสู่สิ่งที่เรียกว่า New Technology File System (NTFS) NTFS นำเราไปสู่จุดที่ชื่อไฟล์สามารถยาวได้ 255 ตัวอักษร และความยาวเส้นทางไฟล์ (file path) สามารถไปถึง 32,767 ตัวอักษรได้ ดังนั้นเราจะมีชื่อไฟล์ที่ยาวเกินไปได้อย่างไร?
Windows มีสิ่งที่เรียกว่า system variables (ตัวแปรระบบ) นี่คือตัวแปรที่ Windows พึ่งพาในการทำงาน เพราะ Windows จะรู้เสมอว่าตัวแปรเหล่านี้หมายถึงอะไรและอยู่ที่ไหน แม้เราจะย้ายบิตและไบต์ไปทั่ว ตัวแปรระบบ MAX_PATH คือตัวที่จำกัดชื่อไฟล์และเส้นทางไฟล์ให้อยู่ภายใต้ 260 ตัวอักษร
เป็นตัวแปร คุณอาจคิดว่าเราสามารถเปลี่ยนมันได้ ไม่ เราไม่ควร มันจะเหมือนดึงด้ายออกจากเสื้อกันหนาว ทันทีที่ตัวแปรระบบหนึ่งเปลี่ยน ตัวแปรระบบอื่นๆ และคอมโพเนนต์ที่พึ่งพาพวกมันเริ่มถล่มถลอก
เราจะแก้ไขอย่างไร?
วิธีแก้ง่าย
หากคุณโชคดี คุณจะได้ข้อผิดพลาดและรู้ทันทีว่าไฟล์ไหนชื่อยาวเกินไป หรืออย่างน้อยรู้ว่าจะหาไฟล์ได้ที่ไหน อาจคุณมีชื่อไฟล์ที่ดูอย่าง:
C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx
ชัดเจนว่าใครเป็นผู้กระทำในกรณีนี้ หาไฟล์ใน Windows Explorer หรือ File Explorer ตามที่เรียกใน Windows 10 คลิกครั้งเดียว กด F2 เพื่อเปลี่ยนชื่อ และเปลี่ยนชื่อไฟล์โง่ๆ นั้นให้เป็นอย่างสมเหตุสมผล ปัญหาแก้แล้ว
วิธีแก้ที่ไม่ง่ายเท่านั้น
ไม่ได้ง่ายเสมอไปในการแก้ปัญหานี้ บางครั้งคุณอาจไม่สามารถเปลี่ยนชื่อไฟล์หรือไดเรกทอรีได้ ไม่ว่าจะเป็นเหตุผลอะไร
โซลูชันต่อไปนี้จะทำงานให้คุณ พวกมันไม่ได้ยากในการทำ
ย้าย ลบ หรือคัดลอกไฟล์หรือไดเรกทอรีโดยใช้ PowerShell
บางครั้งคุณได้ข้อผิดพลาดเมื่อพยายามย้าย ลบ หรือคัดลอกไดเรกทอรีที่จำนวนตัวอักษรของเส้นทางไฟล์มากกว่า 260
โปรดทราบว่าคำว่า directory และ folder แลกเปลี่ยนได้ เราจะใช้ 'directory' ต่อไป คำสั่ง PowerShell cmdlets ต่อไปนี้สามารถใช้กับไฟล์ได้เช่นกัน
อาจมีเส้นทางไฟล์ที่ดูอย่าง:
C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx
เส้นทางไฟล์นั้นยาว 280 ตัวอักษร ดังนั้นเราจึงไม่สามารถคัดลอกไดเรกทอรีออกจากนั้นไปที่อื่นด้วยวิธี copy-paste ปกติ เราได้ข้อผิดพลาด Destination Path Too Long
สมมติว่าด้วยเหตุผลใดเหตุผลหนึ่ง เราไม่สามารถเปลี่ยนชื่อไดเรกทอรีที่ไฟล์ซ้อนอยู่ได้ เราจะทำอย่างไร?
เปิด PowerShell หากคุณยังไม่เคยใช้ PowerShell เพลิดเพลินกับบทความของเรา Using PowerShell for Home Users – A Beginner's Guide คุณสามารถทำขั้นตอนต่อไปโดยไม่ต้องอ่านบทความ
เมื่อ PowerShell เปิด คุณจะอยู่ที่รากของไดเรกทอรีผู้ใช้ ตามมาสมมติ C:\Users\guymc คือไดเรกทอรีผู้ใช้ของคุณ
ไดเรกทอรีชื่อ This อยู่ภายในไดเรกทอรี Documents เพื่อย้ายเข้าไปในไดเรกทอรี Documents เราใช้คำสั่ง DOS cd Documents
คุณจะเห็นพรอมต์เปลี่ยนเป็น C:\Users\guymc\Documents นั่นดี เรากำลังทำงานใกล้ไดเรกทอรีที่จะทำให้ง่ายขึ้น
คัดลอกไดเรกทอรีโดยใช้ Copy-Item
เราต้องการคัดลอกไดเรกทอรี This และเนื้อหาของมันเข้าไปใน ThatNewFolder ใช้ PowerShell cmdlet Copy-Item พร้อมพารามิเตอร์ -Destination และ -Recurse
-Destination บอก PowerShell เราต้องการให้คัดลอกไปที่ไหน -Recurse บอก PowerShell ให้คัดลอกรายการทั้งหมดภายในไปยังปลายทาง การคัดลอกทิ้งต้นฉบับไว้ที่เดิมและสร้างใหม่ทั้งหมดที่ปลายทาง
Copy-Item This -Destination ThatNewFolder -Recurse
ย้ายไดเรกทอรีโดยใช้ Move-Item
สมมติเราต้องการย้ายไดเรกทอรี This และไดเรกทอรีและไฟล์ทั้งหมดในมัน ไป ThatNewFolder การย้ายไม่ทิ้งต้นฉบับไว้
เราสามารถใช้ PowerShell cmdlet Move-Item พร้อมพารามิเตอร์ -Path และ -Destination -Path กำหนดรายการที่เราต้องการย้าย และ -Destination บอก PowerShell เราต้องการให้มันไปที่ไหน
Cmdlet จะวาง This ภายใน ThatNewFolder มันยังย้ายทุกอย่างที่อยู่ภายในไดเรกทอรี This ด้วย Move-Item สามารถใช้ย้ายไฟล์หรือไดเรกทอรี และทำงานได้ไม่ว่าความยาวเส้นทางไฟล์หรือชื่อไฟล์จะเป็นเท่าไหร่
Move-Item -Path This -Destination ThatNewFolder
เพื่อให้แน่ใจว่าทำงาน คุณสามารถใช้คำสั่ง cd ThatNewFolder เพื่อเข้าไปใน ThatNewFolder จากนั้นใช้คำสั่ง dir เพื่อแสดงรายการไดเรกทอรีใน ThatNewFolder คุณจะเห็นไดเรกทอรี This อยู่ในนั้น
ลบไดเรกทอรีโดยใช้ Remove-Item
หากเราต้องการลบไดเรกทอรี This และทุกอย่างในมัน เราใช้ cmdlet Remove-Item
Cmdlet Remove-Item มีความปลอดภัยในตัวที่ทำให้ลบไดเรกทอรีที่มีของภายในยาก ในตัวอย่างของเรา เรารู้ว่าเราต้องการลบทุกอย่าง ดังนั้นเราจะใช้พารามิเตอร์ -Recurse เพื่อให้มันลบทุกอย่างภายใน และ -Force เพื่อให้มันทำโดยไม่ถามว่าเราแน่ใจไหมสำหรับทุกรายการภายใน
เตือนไว้! การกู้คืนสิ่งที่ลบด้วยวิธีนี้จะยากมาก คุณสามารถลองวิธีใน How to Recover Accidentally Deleted Files แต่别期望太多
Remove-Item This -Recurse -Force
คุณสามารถใช้คำสั่ง dir อีกครั้งเพื่อให้แน่ใจว่ามันหายแล้ว
ทำให้ Windows 10 ยอมรับเส้นทางไฟล์ยาว
หากคุณรู้ว่าคุณจะใช้เส้นทางไฟล์ยาวและชื่อไฟล์ยาวซ้ำๆ มันง่ายกว่าที่จะทำให้ Windows ทำงานให้คุณ ไม่มีความหมายที่จะใช้ PowerShell ทำงานทุกวัน
มีสองวิธีที่เราสามารถทำได้ หนึ่งสำหรับ Windows 10 Home users และอีกหนึ่งสำหรับ Windows 10 Pro หรือ Enterprise users วิธีเหล่านี้อาจทำงานสำหรับ Windows 8.1 หรือก่อนหน้า แต่เราไม่รับประกัน
ทำให้ Windows 10 Home ยอมรับเส้นทางไฟล์ยาว
เพื่อทำให้ Windows 10 Home ยอมรับเส้นทางไฟล์ยาว เราต้องเปิด Registry Editor หากคุณยังไม่เคยทำงานใน Registry Editor ให้ระมัดระวัง การลบหรือเปลี่ยนสิ่งใดสิ่งหนึ่งโดยไม่ได้ตั้งใจในที่นี่สามารถหยุด Windows ให้ทำงานไม่ได้โดยสิ้นเชิง
ทำสำรอง registry ของคุณเสมอก่อนทำการเปลี่ยนแปลง เรียนรู้ทุกสิ่งที่คุณต้องการรู้เกี่ยวกับนั้นใน Ultimate Guide to Backing Up and Restoring the Windows Registry
เมื่อคุณเปิด Registry Editor แล้ว และทำสำรองแล้ว ให้ไปที่ตำแหน่ง HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem และหาคีย์ LongPathsEnabled
ดับเบิลคลิกที่ LongPathsEnabled ในฟิลด์ Value data: ให้แน่ใจว่าตัวเลข 1 อยู่ในนั้น คลิก OK เพื่อยืนยันการเปลี่ยนแปลง
ออกจาก Registry Editor และคุณควรสามารถทำงานกับเส้นทางไฟล์ยาวได้แล้ว
ทำให้ Windows 10 Pro หรือ Enterprise ยอมรับเส้นทางไฟล์ยาว
เพื่อให้ Windows 10 Pro หรือ Enterprise ใช้เส้นทางไฟล์ยาวได้ เราจะใช้ Group Policy Editor มันคือเครื่องมือที่ให้เราตั้งนโยบายว่ Windows ทำงานอย่างไรที่ระดับคอมพิวเตอร์และระดับผู้ใช้
เรามีบทความหลาย篇เกี่ยวกับการใช้ group policy ทำอย่างเช่นปิดหรือเปิดตัวเลือก Internet Explorer หรือเพิ่มข้อความบนหน้าจอล็อกอิน
เปิด Group Policy Editor โดยไปที่เมนู Start และพิมพ์ gpedit ผลลัพธ์ด้านบนควรเป็น Edit group policy ดับเบิลคลิกที่นั้น
เมื่อ Group Policy Editor เปิด ให้ไปที่ Computer Configuration > Administrative Templates > System > Filesystem ที่นั่น คุณจะเห็นนโยบาย Enable Win32 long paths
ดับเบิลคลิกที่มันเพื่อแก้ไขการตั้งค่านโยบาย เปลี่ยนจาก Disabled เป็น Enabled จากนั้นคลิกปุ่ม OK เพื่อยืนยันการเปลี่ยนแปลง
นโยบายอาจไม่มีผลทันที คุณสามารถบังคับให้ group policy อัปเดตได้
จบแล้ว
มีวิธีอื่นๆ อีกบางอย่างในการ繞道ชื่อไฟล์ยาวและเส้นทางไฟล์ แต่สิ่งที่เราผ่านมาที่นี่คือวิธีที่ง่ายที่สุด มีประสิทธิภาพที่สุด