วิธีแก้ไขปัญหา 'ชื่อไฟล์ยาวเกินไป' ใน Windows

หากคุณเคยเห็นปัญหานี้ อาจเป็นวิธีแก้ปัญหาง่ายๆ สำหรับคุณ หากคุณเห็นข้อผิดพลาดนี้มากกว่าสองครั้ง แสดงว่าคุณทราบด้วยว่าบางครั้งอาจเป็นปัญหาที่ซับซ้อนที่ต้องแก้ไข

หวังว่าคุณจะพบกับการแก้ไขที่หลากหลายอย่างง่าย แต่เราจะเตรียมคุณให้พร้อมสำหรับการแก้ไขที่ง่ายน้อยกว่าและรับประกันว่าจะได้ผลเช่นกัน

เหตุใดความยาวของชื่อไฟล์ถึงเป็นปัญหาใน Windows(Why Is Filename Length Even An Issue In Windows?)

มีประวัติอันยาวนานเกี่ยวกับความยาวของชื่อไฟล์ที่เป็นปัญหาสำหรับระบบปฏิบัติการเช่นWindows มีบางครั้งที่คุณไม่สามารถมีชื่อไฟล์ที่ยาวเกิน 8 อักขระและนามสกุลไฟล์ 3 อักขระได้ สิ่งที่ดีที่สุดที่คุณสามารถทำได้คือmyresume.doc นี่เป็นข้อจำกัดในการออกแบบระบบไฟล์

สิ่งต่างๆ ดีขึ้นเมื่อWindows เวอร์ชันใหม่ ออกมา เราเปลี่ยนจากระบบไฟล์เก่าแบบจำกัดไปสู่สิ่งที่เรียกว่าNew Technology File System ( NTFS ) NTFSพาเราไปยังจุดที่ชื่อไฟล์มีความยาวได้ 255 อักขระ และความยาวเส้นทางของไฟล์อาจยาวได้ถึง 32,767 อักขระ แล้วเราจะมีชื่อไฟล์ที่ยาวเกินไปได้อย่างไร?

Windowsมีสิ่งที่เรียกว่าตัวแปรระบบ ตัวแปรเหล่านี้เป็นตัวแปรที่Windowsใช้ในการทำงาน เนื่องจากWindowsจะรู้ว่าตัวแปรเหล่านี้หมายถึงอะไรและอยู่ที่ใด แม้ว่าเราจะย้ายบิตและไบต์ไปทั่ว ตัวแปรระบบMAX_PATHคือตัวแปรที่จำกัดชื่อไฟล์และพาธไฟล์ให้ไม่เกิน 260 อักขระ

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

แล้วเราจะแก้ไขอย่างไร?

The Easy Fix

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

C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

เห็นได้ชัดว่าใครเป็นผู้กระทำความผิดในกรณีนี้ ค้นหาไฟล์ในWindows ExplorerหรือFile Explorerตามชื่อในWindows 10คลิกหนึ่งครั้งที่ไฟล์นั้น กดF2เพื่อเปลี่ยนชื่อ และเปลี่ยนชื่อไฟล์ที่ไร้สาระเป็นชื่อที่สมเหตุสมผลกว่า แก้ไขปัญหา แล้ว(Problem)

การแก้ไขที่ไม่ค่อยง่าย(The Less Easy Fixes)

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

วิธีแก้ปัญหาต่อไปนี้จะช่วยคุณได้ พวกเขาไม่ยากที่จะทำ

ย้าย(Move)ลบ(Delete)หรือคัดลอกไฟล์หรือไดเรกทอรีโดยใช้ PowerShell(Or Copy Files Or Directories Using PowerShell)

บางครั้ง คุณอาจได้รับข้อผิดพลาดเมื่อพยายามย้าย ลบ หรือคัดลอกไดเรกทอรีที่มีจำนวนอักขระสำหรับเส้นทางไฟล์มากกว่า 260

โปรดทราบว่าไดเร็กทอรี word และโฟลเดอร์สามารถใช้แทนกันได้ เราจะใช้ 'ไดเรกทอรี' ต่อไป PowerShell cmdlet ต่อไปนี้สามารถใช้กับไฟล์ได้

บางทีเส้นทางของไฟล์อาจดูเหมือน:

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 อักขระ ดังนั้นเราจึงไม่สามารถคัดลอกไดเร็กทอรีจากที่นั่นไปยังที่อื่นด้วยวิธีคัดลอกและวางปกติ เราได้รับข้อผิดพลาดเส้นทางปลายทางยาวเกินไป(Destination Path Too Long)

สมมติว่าด้วยเหตุผลใดก็ตาม เราไม่สามารถเปลี่ยนชื่อไดเร็กทอรีที่ไฟล์ซ้อนอยู่ พวกเราทำอะไร?

(Open PowerShell)เปิดPowerShell หากคุณยังไม่ได้ใช้PowerShellโปรดอ่านบทความเรื่องการใช้ PowerShell สำหรับผู้ใช้ตามบ้าน – คู่มือสำหรับผู้เริ่มต้นใช้(Using PowerShell for Home Users – A Beginner’s Guide)งาน คุณสามารถทำขั้นตอนต่อไปได้โดยไม่ต้องอ่านบทความ

เมื่อPowerShellเปิดขึ้นมา คุณจะอยู่ที่รูทของไดเร็กทอรีผู้ใช้ของคุณ ปฏิบัติตาม(Follow)โดยสมมติว่าC:\Users\guymc เป็นไดเร็กทอรีผู้ใช้ของคุณ

ไดเร็กทอรีชื่อThisอยู่ภายในไดเร็กทอรีDocuments ในการย้ายไปยังไดเร็กทอรีDocumentsเรา  ใช้ คำสั่งDOS cd Documents

คุณจะเห็นข้อความแจ้งเปลี่ยนเป็นC 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 นอกจากนี้ยังจะย้ายทุกอย่างที่อยู่ในไดเร็กทอรีนี้ Move-Item สามารถใช้เพื่อย้ายไฟล์หรือไดเร็กทอรี และใช้งานได้โดยไม่คำนึงถึงเส้นทางของไฟล์หรือความยาวของชื่อไฟล์

Move-Item -Path This -Destination ThatNewFolder

เพื่อให้แน่ใจว่าใช้งานได้ ให้ใช้ คำสั่ง cd ThatNewFolderเพื่อเข้าสู่ThatNewFolder จากนั้นใช้ คำสั่ง dirเพื่อแสดงรายการไดเรกทอรีในThatNewFolder คุณจะเห็นไดเร็กทอรีนี้อยู่ในนั้น

ลบไดเรกทอรีโดยใช้ Remove-Item

หากเราต้องการลบ ไดเร็กทอรี นี้(This )และทุกอย่างในนั้น เราใช้Remove-Item cmdlet

Remove-Item cmdlet มี ความปลอดภัยในตัวที่ทำให้การลบไดเร็กทอรีที่มีสิ่งต่าง ๆ อยู่ภายในนั้นทำได้ยาก ในตัวอย่างของเรา เรารู้ว่าเราต้องการลบทุกอย่าง ดังนั้นเราจะใช้พารามิเตอร์-Recurseเพื่อทำให้มันลบทุกอย่างที่อยู่ภายใน และ-Forceเพื่อทำให้มันทำอย่างนั้นโดยไม่ถามเราว่าเราแน่ใจหรือไม่ว่าทุกรายการภายใน

เตือนไว้! การกู้คืนสิ่งที่ถูกลบด้วยวิธีนี้จะเป็นเรื่องยากมาก คุณสามารถลองใช้วิธีการต่างๆ ใน​​วิธีการกู้คืนไฟล์ที่ถูกลบโดยไม่ได้ตั้งใจแต่อย่าคาดหวังมาก

Remove-Item This -Recurse -Force

คุณสามารถใช้คำสั่ง dir อีกครั้งเพื่อให้แน่ใจว่าหายไป

ทำให้ Windows 10 ยอมรับเส้นทางไฟล์ที่ยาว(Make Windows 10 Accept Long File Paths)

ถ้าคุณรู้ว่าคุณกำลังจะใช้พาธไฟล์แบบยาวและชื่อไฟล์แบบยาวซ้ำๆ จะทำให้Windowsทำงาน แทนคุณได้ง่ายขึ้น ไม่มีเหตุผลที่จะใช้PowerShellเพื่อทำงานทุกวัน

มีสองวิธีที่เราสามารถทำได้ หนึ่งสำหรับ ผู้ ใช้ Windows 10 (Windows 10) Homeและอีกอันสำหรับผู้ใช้Windows 10 ProหรือEnterprise วิธีการเหล่านี้อาจใช้ได้กับWindows 8.1หรือเก่ากว่า แต่เราไม่สามารถรับประกันได้

ทำให้(Make) Windows 10 Home ยอมรับเส้นทางไฟล์ที่ยาว(Home Accept Long File Paths)

เพื่อให้Windows 10 Home ยอมรับเส้นทางของไฟล์ที่ ยาวเราต้องเปิดRegistry Editor หากคุณไม่เคยทำงานในRegistry Editorมาก่อน โปรดใช้ความระมัดระวัง การลบหรือเปลี่ยนแปลงสิ่งต่าง ๆ โดยไม่ได้ตั้งใจอาจทำให้Windows ไม่ ทำงานอย่างสมบูรณ์

สำรองข้อมูลรีจิสทรีของคุณเสมอก่อนทำการเปลี่ยนแปลงใดๆ เรียนรู้ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับเรื่องนี้ในUltimate Guide to Backing Up and Restore the Windows( Ultimate Guide to Backing Up and Restoring the Windows Registry) Registry

เมื่อคุณเปิด Registry Editor และทำการสำรองข้อมูล แล้วให้ไปที่ตำแหน่งHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystemและค้นหาคีย์LongPathsEnabled

ดับเบิลคลิกที่LongPathsEnabled ในฟิลด์Value data: ตรวจสอบให้แน่ใจว่าหมายเลข (Value data:)1อยู่ในนั้น คลิกตกลง(OK)เพื่อยอมรับการเปลี่ยนแปลง

ออกจากRegistry Editorและคุณควรจะสามารถทำงานกับเส้นทางไฟล์ที่ยาวมากได้ในขณะนี้

ทำให้(Make) Windows 10 Pro หรือ Enterprise ยอมรับเส้นทางไฟล์ที่ยาว(Pro Or Enterprise Accept Long File Paths)

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

เรามีบทความหลายบทความเกี่ยวกับการใช้นโยบายกลุ่มเพื่อทำสิ่งต่างๆ เช่นการปิดใช้งานหรือเปิดใช้งานตัวเลือก Internet Explorer( disabling or enabling Internet Explorer options)หรือการเพิ่มข้อความลงในหน้าจอการเข้าสู่( adding a message to the logon screen)ระบบ

เปิดตัวแก้ไขนโยบายกลุ่ม(Group Policy Editor)โดยไปที่ เมนู Startแล้วพิมพ์gpedit ผลลัพธ์ด้านบนควรแก้ไขนโยบาย(Edit group policy)กลุ่ม ดับเบิลคลิกที่นั้น

เมื่อตัวแก้ไขนโยบายกลุ่ม(Group Policy Editor) เปิด ขึ้นให้ไปที่Computer Configuration > Administrative Templates > System > Filesystemคุณจะเห็นนโยบาย Enable Win32 long paths(Enable Win32 long paths)

ดับเบิลคลิกเพื่อแก้ไขการตั้งค่านโยบาย เปลี่ยนจากDisabledเป็นEnabledจากนั้นคลิก ปุ่ม OKเพื่อยืนยันการเปลี่ยนแปลง 

นโยบายอาจไม่มีผลบังคับใช้ทันที คุณสามารถบังคับให้นโยบายกลุ่มอัปเดต( force the group policy to update)ได้

แค่นั้นแหละ(That’s It)

มีวิธีอื่นในการแก้ไขชื่อไฟล์ที่ยาวและเส้นทางของไฟล์ แต่สิ่งที่เราได้ดำเนินการไปแล้วที่นี่คือวิธีที่ง่ายที่สุดและมีประสิทธิภาพมากที่สุด



About the author

ฉันเป็นนักพัฒนาเว็บที่มีประสบการณ์มากกว่า 10 ปีในการทำงานกับเบราว์เซอร์ Firefox และ Google Docs ฉันเป็นผู้เชี่ยวชาญในการสร้างแอปพลิเคชันออนไลน์ที่เรียบง่ายแต่ทรงพลัง และได้พัฒนาโซลูชันบนเว็บสำหรับทั้งธุรกิจขนาดเล็กและองค์กรขนาดใหญ่ ฐานลูกค้าของฉันประกอบด้วยชื่อที่ใหญ่ที่สุดในธุรกิจ เช่น FedEx, Coca Cola และ Macy's ทักษะของฉันในฐานะนักพัฒนาทำให้ฉันเป็นผู้สมัครในอุดมคติสำหรับโครงการใดๆ ที่จำเป็นต้องทำให้เสร็จอย่างรวดเร็วและมีประสิทธิภาพ - ตั้งแต่การพัฒนาเว็บไซต์ที่กำหนดเองไปจนถึงการสร้างแคมเปญการตลาดทางอีเมลที่มีประสิทธิภาพ



Related posts