טיפול בשגיאת Windows: נתיב היעד ארוך מדי

האם ניסית להעביר או למחוק קובץ ביכולת מירבית, רק לקבל הודעת שגיאה מתסכלת שאומרת "נתיב היעד ארוך מדי"? השגיאה הזו היא יותר נפוצה ממה שתיחשב, והופכת את משימות פשוטות של ניהול קבצים למבוך דיגיטלי.

אך אל תדאג! במדריך זה, תלמד אסטרטגיות שעברו בדיקת מציאות להתמודד עם דילמת "נתיב היעד ארוך מדי".

עכשיו, אם אתה כבר עייף מלהרגיש שהמחשב שלך משחק קשה לשגרה, הישאר כאן כדי להיפטר מהודעת השגיאה המעצבנת הזו בחלוף!

תכנוני דרישות

לפני שתתמודד עם שגיאת "נתיב היעד ארוך מדי", וודא שאתה מצויד היטב למסע עם הפריטים הבאים:

  • A Windows computer – This tutorial uses Windows 10 for demonstrations.
  • PowerShell 5.1 או גרסה מתקדמת יותר – במדריך זה אנו משתמשים ב-PowerShell 7.4.0.
  • הרשאות מנהל.
  • התקן את 7-zip – במדריך זה אנו משתמשים בגרסה 23.01 של 7-zip, הגרסה האחרונה בזמן כתיבת המדריך.

פירוט על שגיאת "נתיב היעד ארוך מדי"

הודעת הקריפטית הזו, "נתיב היעד ארוך מדי," כמו אחת התמונות למטה, נפגעת לעיתים קרובות ממגבלת MAX_PATH, היגבול ההיסטורי המוטבע עמוק במערכות הקבצים של Windows. ההגבלה של MAX_PATH, המוגדרת כ-260 תווים, הייתה אתגר ממומן מזמן רב עבור משתמשים שעוסקים בספריות מקוננות מאוד, מבני תיקיות מורכבים, ושמות קובצים ארוכים.

Demonstrating the “Destination Path Too Long” error

במהלך המדריך הזה, תביע את המסתורין שבהגבלת MAX_PATH ותחשוף אסטרטגיות פרקטיות להתגבר על ההגבלה הזו.

הפחתת אורך הנתיב באמצעות שינוי שם התיקייה האב

תתכוון שמחשבך החליט פתאום להתחבר לשק יותר עמוק ולקרוא: "להעביר או לא להעביר, זו השאלה." אבל ברצינות, אם נתקלת בבעיה זו ב-Windows, אחת מהתיקונים הבסיסיים הוא לשנות את שם התיקייה האב.

שים לב: אם יש לך תיקייה (המכילה קבצים חשובים) עם שם ארוך שברצונך להעביר או להעתיק למקום אחר, שינוי שם התיקייה האב יסייע למנוע את השגיאה "נתיב היעד ארוך מדי".

כדי לראות איך הפחתת אורך הנתיב פועלת, עקוב אחרי השלבים הבאים:

1. אתה מזהה את התיקייה עם הנתיב הארוך, כמו שמוצג למטה, שם שם התיקייה הוא אוסף של אותיות ומספרים אקראיים.

אחד מהאשמים העיקריים למסר האינטיגמטי הזה הוא המגבלה MAX_PATH (260 תווים) שנקבעה על ידי מערכת ההפעלה Windows. המגבלה הזו מתקיימת כדי לשמור על תאימות בין יישומים ובין מערכות שונות.

Locating the folder with a long name

2. שנה את שם התיקייה לשם קצר יותר (לדוגמה, גיבוי-01).

Renaming the folder

3. עתה, העתק או הזז את התיקייה ששינית את השם למיקום המועדף עליך ובדוק האם עדיין מתקבלת הודעת "היעד ארוך מדי".

Copying or moving the renamed folder to a different location

ביצוע פעולות קובץ על נתיבי קובץ ארוכים באמצעות 7-zip

אם שינוי שם התיקייה או הקובץ אינו עיקרי, טיפול מהיר יהיה לשנות אותם, מה שמתעלה על השגיאה "נתיב היעד ארוך מדי".

אך אם השמירה על השמות הקיימים היא חיונית, האם קיים גישה יעילה בלי לגרום לשגיאה? כן, על ידי ניצול של 7-zip, כלי דחיסה וארכיבה חזק.

כדי לבצע פעולות על קבצי נתיבים ארוכים באמצעות 7-zip, השלם את השלבים הבאים:

1. הפעל מנהל הקבצים של 7-zip מתפריט ההתחלה שלך או מקיצור השולחן העבודה.

2. לאחר מכן, אתר את הקובץ או התיקייה שברצונך ולחץ ימינה עליהם ובחר פעולת קובץ מתוך תפריט ההקשר. אך בדוגמה זו, העתק את הקובץ (העתק אל) למיקום אחר.

שים לב שהקובץ הטקסט מכיל נתיב קובץ ארוך ביותר.

Locating the target file or folder in 7-zip

3. נווט למיקום של יעד הקובץ בתיבת הדו-שיח, ולחץ על אישור כדי לאשר את העתקת הקובץ.

7-zip מתעלם מההגבלות של Win32API על אורך נתיב המקסימלי, מה שמאפשר לך לבצע פעולות קובץ על קבצים ותיקיות.

Setting the file’s destination

בסופו של דבר, נווט למיקום היעד שלך ווודא שהקובץ שהעתקת קיים.

התוצאה הזו מאשרת שהעתקת את הקובץ בהצלחה, ומתעלמת מהמגבלה של MAX_PATH באמצעות 7-zip.

Verifying the file copied via 7-zip exists in the target location

הפעלת תמיכה בנתיבים ארוכים של Win32 ב-Windows

אולי ברצונך להישאר עם פתרונות המבוססים על Windows במקום להסתמך על כלים מהצד השלישי כמו 7-zip כאשר מתמודדים עם נתיבי קובץ ארוכים. אם כן, הפעלת תמיכה בנתיבים ארוכים של Win32 במערכת Windows מציעה גישה טבעית ומשולבת לעקיפת השגיאה השאפות "הנתיב ליעד ארוך מדי".

על ידי שחרור תמיכה בנתיבים ארוכים של Win32, אתה מעניק למערכת ה-Windows שלך את היכולת לטפל בנתיבי קובץ ארוכים באופן אלגנטי מבלי לצורך ביישומים חיצוניים. תכונה זו מציעה פתרון מותאם אישית המתאים להעדפתך לפונקציות נוטיביות של Windows.

המשך לקרוא ולחקור שיטות שונות להפעלת תמיכה בנתיבים ארוכים של Win32.

שימוש בעורך הרישום

אחד מהדרכים העיקריות להפעלת תמיכה בנתיבים ארוכים של Win32 היא בשימוש בעורך הרישום. מרכז הבקרה הדיגיטלי הזה משמש כלב הלב של מערכת ה-Windows שלך, מאפשר לך להתאים הגדרות בדיוק.

כדי להפעיל את תמיכת נתיבים ארוכים של Win32 באמצעות עורך הרישום, המשך עם השלבים הבאים:

1. פתח תיבת הריצה (Win + R), הקלד regedit, ולחץ על Enter (או לחץ אישור) כדי להפעיל את עורך הרישום.

Launching the Registry Editor via the Run dialog

? חשוב: לפני שתבצע שינויים בעורך הרישום, צור גיבוי של הרישום. הגיבוי הזה הוא מניע המאפשר לך לשחזר את הרישום במקרה של תקלות או בעיות בלתי צפויות.

2. נווט למקום הבא או הדבק את המקש בסרגל הכתובת כדי לגשת להגדרות ותצורות שונות הקשורות להתנהגות מערכת הקבצים.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Accessing settings and configurations related to the file system behavior

3. חפש ולחץ פעמיים על רשומת LongPathsEnabled (לוח ימין) כדי לגשת לנתונים הקשורים ולשנות את ערך הערך מ-0 ל-1.

רשומה זו אומרת למערכת להפעיל תמיכה בנתיבים ארוכים של Win32.

Enabling the Win32 long path support via the LongPathEnabled entry in Registry Editor

4. צא מעורך הרישום ואתחל מחדש את מערכת ההפעלה של Windows כדי להחיל את השינויים שלך.

5. כעת, בצע פעולות קובץ כמו העתקה או העברת קבצים או תיקיות עם נתיבי קובץ ארוכים כדי לראות האם תוכל לעקוב אחרי השגיאה "נתיב היעד ארוך מדי".

? לצערנו, בזמן כתיבת הטקסט הזה, עורך הקבצים הטבעי ב-Windows 10 וב-Windows Server 2022 עדיין נתקל בהגבלות בתמיכה בנתיבים ארוכים של NTFS. אם אתה עובד הרבה על נתיבי קובץ ארוכים בזרימת העבודה שלך, ישנם מנהלי קבצים חיצוניים חינמיים שאתה יכול לפנות אליהם, כמו OneCommander ו־TotalCommander.

שימוש בעורך מדיניות הקבוצה (GPE)

חקירת הפרטים של האפשרות לתמיכה בנתיבים ארוכים של Win32 מבליטה מגוון של גישות, ובין הגישות המתקדמות ביותר נמנה השימוש ב-GPE. חשוב לראות את GPE כקופסת הכלים האישית שלך להתאמה מותאמת אישית של פונקציות Windows.

כאשר אתה מעוצב ביכולות נתיב מורחבות למערכת שלך, GPE מוביל את הבמה, מציע שיטה מרכזית ומערכתית.

כדי להפעיל תמיכה בנתיבים ארוכים של Win32 דרך GPE, עליך לבצע את השלבים הבאים:

1. פתח את GPE (gpedit.msc) דרך התיבה להרצה, כפי שמוצג למטה.

GPE היא snap-in של Microsoft Management Console (MMC) שמספקת ממשק משתמש גרפי לניהול הגדרות מדיניות במערכת ההפעלה Windows.

Opening the GPE via the Run dialog

2. לאחר מכן, התחל את הפעלת תמיכה בנתיבים ארוכים של Win32 בחלון הראשי של GPE כך:

  • נווט אל הגדרות מחשבתבניות ניהולמערכתמערכת קבצים בעץ הקונסולה (בפאנל השמאלי). ביצוע זה מאפשר לך לגשת להגדרות המדיניות הקשורות למערכת הקבצים.
  • חפש ולחץ פעמיים על הגדרת המדיניות אפשר נתיבים ארוכים של Win32 (בפאנל הימני). יופיע חלון הגדרת תצורה עבור המדיניות הנבחרת (שלב שלוש).
Accessing the configuration dialog for the “Enable Win32 long paths” policy setting

3. לאחר מכן, בחר באפשרות מאופשר בחלון התצורה ולחץ אישור כדי לאפשר תמיכה בנתיבים ארוכים של Win32 עבור Windows.

Enabling the Win32 long paths support for Windows via GPE

4. עתה, העתק או הזז קבצים או תיקיות עם נתיבי קובץ ארוכים כדי לבדוק את תמיכת Win32 בנתיבים ארוכים.

יצירת קישורים סמליים עבור נתיבים ארוכים

בנוסף להפעלת תמיכה בנתיבים ארוכים של Win32, אפשרות נוספת לעקוף את ההגבלות של נתיבי קבצים ארוכים היא יצירת קישורים סמליים דיגיטליים.

יצירת קישור סמלי היא דומה להנחת דלת מוסתרת בארון עם מסמרות שלך. כשתפתח אותו, תמצא נתיב מהיר לקבצים שלך מבלי לפגוע במבנה הקיים.

כדי ליצור קישורים סמליים עבור נתיבים ארוכים, עבור על השלבים הבאים:

1. הפעל מזהה הפקודה כמנהל והרץ את הפקודה הבאה mklink כדי ליצור קישור סמלי לתיקייה (/D) בנתיב היעד המצויין (כלומר, C:\folder-link).

הקישור הסמלי מצביע לתיקייה שלך עם נתיב ארוך מדי. לכן, החלף את <symlink> בנתיב היעד ואת <long-path> בנתיב הארוך שלך.

mklink /D <symlink> <long-path>
Creating a symbolic link for a folder

2. לאחר מכן, הרץ את הפקודה dir הבאה כדי לבדוק האם הקישור הסמלי לתיקייה שלך קיים.

dir <symlink>
Checking if the directory symbolic link exists

3. בתוך התיקייה שלך עם הנתיב הארוך, צור קובץ טקסט בשם symlink.txt, המשמש כהוכחה שהקישור הסמלי שלך עובד.

? המדריך הזה משתמש במנהל קבצים של צד שלישי בשם Directory Opus, דומה ל־XYplorer. שניהם הם מנהלי קבצים עשירי תכונות המיועדים לשפר את חוויית ניהול הקבצים בחלונות.

Creating a text file to serve as proof that the symbolic link works

4. לבסוף, אתר ונווט בתוך הקישור הסמלי לתיקייה שנוצרה כעת במנהל הקבצים שלך כדי לאשר שהוא מצביע לתיקיית הנתיב הארוך שלך.

עכשיו, תוכל להעתיק או להעביר קבצים לתיקיית היעד שלך, מתעלמת ממגבלת MAX_PATH.

Verifying the directory symbolic link points to the long path folder

שימוש בפקודת Robocopy לפעולות על קבצים

אולי יצירת קישור סמלי אינה חלק מהתוכנית שלך, אך אתה מחפש פעולה ישירה על קבצים, כמו העתקת קבצים מתיקיות ארוכות של נתיבי קבצים ואליהן. אם כן, תזדקק Robocopy, פתרון עוצמתי להפוך את בעיות ההעברה של קבצים שלך לחוויה חלקה.

כדי לבצע פעולות קבצים דרך פקודת ה-Robocopy, המשך עם השלבים הבאים:

1. פתח PowerShell כמנהל ובצע את הפקודות הבאות כדי להכריז על משתנים שיחזיקו את נתיבי המקור והיעד של קובץ היעד שלך.

הפקודות אלו אין להן פלט, אך ודא שאתה מחליף את מילות המקום <source> ו־<destination> בהתאמה.

$srcPath=<source>
$destPath=<destination>
Declaring variables to hold the target file’s source and destination paths

2. לְבַצֵע את הפקודה robocopy הבאה כדי להעתיק את קובץ symlink.txt ואת כל המידע שלו (/COPYALL) מהמקור ($srcPath) ליעד ($destPath).

פקודה זו מבטיחה שהקובץ היעד יועתק בלעדיים בלי המתנה (/W:0) או ניסיון חוזר (/R:0) במקרה של שגיאות במהלך ההעתקה.

robocopy $srcPath $destPath symlink.txt /COPYALL /W:0 /R:0

? אולי ברצונך להעביר את הקובץ למיקום שונה. אם כן, החלף את /COPYALL באפשרות /MOVE, כפי שמוצג למטה. אפשרות זו אומרת ל־robocopy לבצע פעולת "גזירה והדבקה".

robocopy $srcPath $destPath symlink.txt /MOVE /W:0 /R:0

הפלט למטה מאשר שהעתקת בהצלחה של קובץ אחד ללא קשר לנתיב הארוך.

Copying a file via the robocopy command bypassing the MAX_PATH limit

3. כעת, הפעל את הפקודה Get-ChildItem למטה כדי לוודא שהקובץ הועתק בהצלחה למיקום המסוים שלך.

Get-ChildItem $destPath
Verifying the copied file exists in the specified location

מבוסס על הפרמטר -LiteralPath בפקודות PowerShell

כבר השתמשת ביכולת של Robocopy לנווט בנתיבי הקבצים. עם זאת, שאלה נותרת תלויה: איך תוכל לשפר את השליטה והדיוק שלך בביצוע פעולות על קבצים?

PowerShell מציע פקודות עם פרמטרים, כמו -LiteralPath, המאפשרות לך לכבוש את מורכבות ניהול הקבצים.

כדי לבצע פעולות על קבצים באמצעות הפרמטר -LiteralPath, הפעל את הפקודה הבאה:

1. פתח את PowerShell כמנהל ובצע את הפקודות הבאות כדי להגדיר משתנים שיכילו את נתיב הקובץ המקור ונתיבי היעד.

ודא שאתה מחליף את <source\symlink.txt> עם הנתיב המלא של הקובץ שלך ואת <destination> עם נתיב היעד שאתה מעוניין בו.

$srcPath=<source\symlink.txt>
$destPath=<destination>

2. לאחר מכן, הרץ את הפקודה Copy-Item להעתקת הקובץ symlink.txt ליעד שצוין ($destPath). האפשרות -LiteralPath מאפשרת לך לציין את נתיב הקובץ בצורה ליטרלית ללא כל פרשן מסוגל לפרשו.

פקודה זו, כאשר היא מצליחה, אין לה פלט לקונסולה, אך תוודא את התוצאה בשלב הבא.

Copy-Item -LiteralPath $srcPath -Destination $destPath

? כאשר נדרש, ה--LiteralPath עובד גם עם פקודות אחרות לפעולות על קבצים, כמו Move-Item, Rename-Item, ו-Remove-Item.

3. לבסוף, הריצו את הפקודה Get-ChildItem למטרה של רשימת קבצים ותיקיות בתוך הנתיב היעד ($destPath).

Get-ChildItem $destPath
Verifying the file has been copied successfully to the destination path

? בעוד שה--LiteralPath פועל בצורה מצוינת כפי שהוא, הפרמטר הזה משמש בעיקר לצורך ציון נתיב המקור או שם הקובץ. אך בתרחילים תסריטוניים, השימוש ב--LiteralPath מבטיח שהתסריט שלך יפעל על הנתיבים המסוימים שצוינו, מפחית את סיכוני השגיאות עקביות לפעולת תרגום של תווים לא צפויים.

חילוץ קבצי שחזור דרך הפקודה Expand-Archive

נניח שהורדת קובץ שחזור (ZIP) עם שם ארכיון ארוך למדי שברצונך לחלץ בלתי משנה את השם. במקרים כאלה, פקודת ה-Expand-Archive של PowerShell יכולה להיות פתרון מעשי.

פקודת ה-Expand-Archive מאפשרת לך לפתוח או לחלץ קבצים מארכיון ובו גמישות להתמודד עם נתיבים ארוכים.

לחלוץ קבצי ארכיון באמצעות פקודת Expand-Archive, נא לבצע את השלבים הבאים:

1. בצעו את הפקודות הבאות ב-PowerShell (כמנהל מערכת) כדי להגדיר משתנים שיחזיקו את הנתיב המלא לקובץ הארכיון שלך ואת הנתיב היעד.

$srcPath=<source\file.zip>
$destPath=<destination>

2. עם המשתנים מוגדרים, הפעילו את הפקודה Expand-Archive שבתוך הקישור, אשר אינה מספקת פלט אך מחלץ את קובץ הארכיון לנתיב היעד שצוין על ידך.

Expand-Archive -Path $srcPath -DestinationPath $destPath

3. לבסוף, הפעילו את הפקודה Get-ChildItem למטה כדי להציג את רשימת הקבצים והתיקיות בנתיב היעד ($destPath).

Get-ChildItem $destPath

שימו לב לשני הפריטים בפלט: קובץ הארכיון (טקסט באדום) והתיקייה שחולצה (מודגשת בכחול). הפלט הזה מאשר שהצלחת לחלץ בהצלחה את קובץ הארכיון שלך מבלי להפעיל את שגיאת "נתיב היעד ארוך מדי".

Verifying the contents of the destination path

סיכום

במהלך המסע הזה, כיסית את ארסנל האסטרטגיות לכיבוש השגיאה הרדומה "נתיב היעד ארוך מדי" בחלונות. חקרת מגוון טכניקות, משינוי שמות התיקיות האב ועד ליכולתו של 7-zip והפעלת תמיכה בנתיבים ארוכים של Win32.

מקשרי סמלים הציעו פתרון חכם, ו־Robocopy העצמתי הראה את יכולתו לבצע פעולות קבצים יעילות. התחקית שלך ל־PowerShell הציגה את יעילותו של הפרמטר -LiteralPath ופקודת Expand-Archive. כל אלו הוכיחו את ערךם הגדול בחילוץ קבצים מבלי להיכנע לאילוצי אורך הנתיב.

עכשיו, למה לא לשקול לשלב את האסטרטגיות הללו יחד כדי ליצור פתרונות עמידים המותאמים לאתגרים הספציפיים שלך? נסה לנסות כתיבת סקריפטים ב־PowerShell, לשלב קישורים סמליים כשזה נדרש, ולמקד את פעולות הקבצים שלך עם Robocopy.

תזכור, המפתח לא רק בפתרון של בעיה מיידית, אלא גם בהבנה של כיצד אלו השיטות יכולות לעבוד בהרמוניה כדי להתמודד עם מגוון של אתגרים הקשורים לקבצים.

Source:
https://adamtheautomator.com/destination-path-too-long/