האם ניסית להעביר או למחוק קובץ ביכולת מירבית, רק לקבל הודעת שגיאה מתסכלת שאומרת "נתיב היעד ארוך מדי"? השגיאה הזו היא יותר נפוצה ממה שתיחשב, והופכת את משימות פשוטות של ניהול קבצים למבוך דיגיטלי.
אך אל תדאג! במדריך זה, תלמד אסטרטגיות שעברו בדיקת מציאות להתמודד עם דילמת "נתיב היעד ארוך מדי".
עכשיו, אם אתה כבר עייף מלהרגיש שהמחשב שלך משחק קשה לשגרה, הישאר כאן כדי להיפטר מהודעת השגיאה המעצבנת הזו בחלוף!
תכנוני דרישות
לפני שתתמודד עם שגיאת "נתיב היעד ארוך מדי", וודא שאתה מצויד היטב למסע עם הפריטים הבאים:
- 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 תווים, הייתה אתגר ממומן מזמן רב עבור משתמשים שעוסקים בספריות מקוננות מאוד, מבני תיקיות מורכבים, ושמות קובצים ארוכים.

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

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

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

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

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

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

הפעלת תמיכה בנתיבים ארוכים של Win32 ב-Windows
אולי ברצונך להישאר עם פתרונות המבוססים על Windows במקום להסתמך על כלים מהצד השלישי כמו 7-zip כאשר מתמודדים עם נתיבי קובץ ארוכים. אם כן, הפעלת תמיכה בנתיבים ארוכים של Win32 במערכת Windows מציעה גישה טבעית ומשולבת לעקיפת השגיאה השאפות "הנתיב ליעד ארוך מדי".
על ידי שחרור תמיכה בנתיבים ארוכים של Win32, אתה מעניק למערכת ה-Windows שלך את היכולת לטפל בנתיבי קובץ ארוכים באופן אלגנטי מבלי לצורך ביישומים חיצוניים. תכונה זו מציעה פתרון מותאם אישית המתאים להעדפתך לפונקציות נוטיביות של Windows.
המשך לקרוא ולחקור שיטות שונות להפעלת תמיכה בנתיבים ארוכים של Win32.
שימוש בעורך הרישום
אחד מהדרכים העיקריות להפעלת תמיכה בנתיבים ארוכים של Win32 היא בשימוש בעורך הרישום. מרכז הבקרה הדיגיטלי הזה משמש כלב הלב של מערכת ה-Windows שלך, מאפשר לך להתאים הגדרות בדיוק.
כדי להפעיל את תמיכת נתיבים ארוכים של Win32 באמצעות עורך הרישום, המשך עם השלבים הבאים:
1. פתח תיבת הריצה (Win + R), הקלד regedit, ולחץ על Enter (או לחץ אישור) כדי להפעיל את עורך הרישום.

? חשוב: לפני שתבצע שינויים בעורך הרישום, צור גיבוי של הרישום. הגיבוי הזה הוא מניע המאפשר לך לשחזר את הרישום במקרה של תקלות או בעיות בלתי צפויות.
2. נווט למקום הבא או הדבק את המקש בסרגל הכתובת כדי לגשת להגדרות ותצורות שונות הקשורות להתנהגות מערכת הקבצים.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

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

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.

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

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

4. עתה, העתק או הזז קבצים או תיקיות עם נתיבי קובץ ארוכים כדי לבדוק את תמיכת Win32 בנתיבים ארוכים.
יצירת קישורים סמליים עבור נתיבים ארוכים
בנוסף להפעלת תמיכה בנתיבים ארוכים של Win32, אפשרות נוספת לעקוף את ההגבלות של נתיבי קבצים ארוכים היא יצירת קישורים סמליים דיגיטליים.
יצירת קישור סמלי היא דומה להנחת דלת מוסתרת בארון עם מסמרות שלך. כשתפתח אותו, תמצא נתיב מהיר לקבצים שלך מבלי לפגוע במבנה הקיים.
כדי ליצור קישורים סמליים עבור נתיבים ארוכים, עבור על השלבים הבאים:
1. הפעל מזהה הפקודה כמנהל והרץ את הפקודה הבאה mklink
כדי ליצור קישור סמלי לתיקייה (/D
) בנתיב היעד המצויין (כלומר, C:\folder-link).
הקישור הסמלי מצביע לתיקייה שלך עם נתיב ארוך מדי. לכן, החלף את <symlink>
בנתיב היעד ואת <long-path>
בנתיב הארוך שלך.

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

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

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

שימוש בפקודת Robocopy לפעולות על קבצים
אולי יצירת קישור סמלי אינה חלק מהתוכנית שלך, אך אתה מחפש פעולה ישירה על קבצים, כמו העתקת קבצים מתיקיות ארוכות של נתיבי קבצים ואליהן. אם כן, תזדקק Robocopy, פתרון עוצמתי להפוך את בעיות ההעברה של קבצים שלך לחוויה חלקה.
כדי לבצע פעולות קבצים דרך פקודת ה-Robocopy, המשך עם השלבים הבאים:
1. פתח PowerShell כמנהל ובצע את הפקודות הבאות כדי להכריז על משתנים שיחזיקו את נתיבי המקור והיעד של קובץ היעד שלך.
הפקודות אלו אין להן פלט, אך ודא שאתה מחליף את מילות המקום <source>
ו־<destination>
בהתאמה.

2. לְבַצֵע את הפקודה robocopy
הבאה כדי להעתיק את קובץ symlink.txt
ואת כל המידע שלו (/COPYALL
) מהמקור ($srcPath
) ליעד ($destPath
).
פקודה זו מבטיחה שהקובץ היעד יועתק בלעדיים בלי המתנה (/W:0
) או ניסיון חוזר (/R:0
) במקרה של שגיאות במהלך ההעתקה.
? אולי ברצונך להעביר את הקובץ למיקום שונה. אם כן, החלף את
/COPYALL
באפשרות/MOVE
, כפי שמוצג למטה. אפשרות זו אומרת ל־robocopy
לבצע פעולת "גזירה והדבקה".
robocopy $srcPath $destPath symlink.txt /MOVE /W:0 /R:0
הפלט למטה מאשר שהעתקת בהצלחה של קובץ אחד ללא קשר לנתיב הארוך.

robocopy
command bypassing the MAX_PATH limit3. כעת, הפעל את הפקודה Get-ChildItem
למטה כדי לוודא שהקובץ הועתק בהצלחה למיקום המסוים שלך.

מבוסס על הפרמטר -LiteralPath
בפקודות PowerShell
כבר השתמשת ביכולת של Robocopy לנווט בנתיבי הקבצים. עם זאת, שאלה נותרת תלויה: איך תוכל לשפר את השליטה והדיוק שלך בביצוע פעולות על קבצים?
PowerShell מציע פקודות עם פרמטרים, כמו -LiteralPath
, המאפשרות לך לכבוש את מורכבות ניהול הקבצים.
כדי לבצע פעולות על קבצים באמצעות הפרמטר -LiteralPath
, הפעל את הפקודה הבאה:
1. פתח את PowerShell כמנהל ובצע את הפקודות הבאות כדי להגדיר משתנים שיכילו את נתיב הקובץ המקור ונתיבי היעד.
ודא שאתה מחליף את <source\symlink.txt>
עם הנתיב המלא של הקובץ שלך ואת <destination>
עם נתיב היעד שאתה מעוניין בו.
2. לאחר מכן, הרץ את הפקודה Copy-Item
להעתקת הקובץ symlink.txt
ליעד שצוין ($destPath
). האפשרות -LiteralPath
מאפשרת לך לציין את נתיב הקובץ בצורה ליטרלית ללא כל פרשן מסוגל לפרשו.
פקודה זו, כאשר היא מצליחה, אין לה פלט לקונסולה, אך תוודא את התוצאה בשלב הבא.
? כאשר נדרש, ה-
-LiteralPath
עובד גם עם פקודות אחרות לפעולות על קבצים, כמוMove-Item
,Rename-Item
, ו-Remove-Item
.
3. לבסוף, הריצו את הפקודה Get-ChildItem
למטרה של רשימת קבצים ותיקיות בתוך הנתיב היעד ($destPath
).

? בעוד שה-
-LiteralPath
פועל בצורה מצוינת כפי שהוא, הפרמטר הזה משמש בעיקר לצורך ציון נתיב המקור או שם הקובץ. אך בתרחילים תסריטוניים, השימוש ב--LiteralPath
מבטיח שהתסריט שלך יפעל על הנתיבים המסוימים שצוינו, מפחית את סיכוני השגיאות עקביות לפעולת תרגום של תווים לא צפויים.
חילוץ קבצי שחזור דרך הפקודה Expand-Archive
נניח שהורדת קובץ שחזור (ZIP) עם שם ארכיון ארוך למדי שברצונך לחלץ בלתי משנה את השם. במקרים כאלה, פקודת ה-Expand-Archive
של PowerShell יכולה להיות פתרון מעשי.
פקודת ה-Expand-Archive
מאפשרת לך לפתוח או לחלץ קבצים מארכיון ובו גמישות להתמודד עם נתיבים ארוכים.
לחלוץ קבצי ארכיון באמצעות פקודת Expand-Archive
, נא לבצע את השלבים הבאים:
1. בצעו את הפקודות הבאות ב-PowerShell (כמנהל מערכת) כדי להגדיר משתנים שיחזיקו את הנתיב המלא לקובץ הארכיון שלך ואת הנתיב היעד.
2. עם המשתנים מוגדרים, הפעילו את הפקודה Expand-Archive
שבתוך הקישור, אשר אינה מספקת פלט אך מחלץ את קובץ הארכיון לנתיב היעד שצוין על ידך.
3. לבסוף, הפעילו את הפקודה Get-ChildItem
למטה כדי להציג את רשימת הקבצים והתיקיות בנתיב היעד ($destPath
).
שימו לב לשני הפריטים בפלט: קובץ הארכיון (טקסט באדום) והתיקייה שחולצה (מודגשת בכחול). הפלט הזה מאשר שהצלחת לחלץ בהצלחה את קובץ הארכיון שלך מבלי להפעיל את שגיאת "נתיב היעד ארוך מדי".

סיכום
במהלך המסע הזה, כיסית את ארסנל האסטרטגיות לכיבוש השגיאה הרדומה "נתיב היעד ארוך מדי" בחלונות. חקרת מגוון טכניקות, משינוי שמות התיקיות האב ועד ליכולתו של 7-zip והפעלת תמיכה בנתיבים ארוכים של Win32.
מקשרי סמלים הציעו פתרון חכם, ו־Robocopy העצמתי הראה את יכולתו לבצע פעולות קבצים יעילות. התחקית שלך ל־PowerShell הציגה את יעילותו של הפרמטר -LiteralPath
ופקודת Expand-Archive
. כל אלו הוכיחו את ערךם הגדול בחילוץ קבצים מבלי להיכנע לאילוצי אורך הנתיב.
עכשיו, למה לא לשקול לשלב את האסטרטגיות הללו יחד כדי ליצור פתרונות עמידים המותאמים לאתגרים הספציפיים שלך? נסה לנסות כתיבת סקריפטים ב־PowerShell, לשלב קישורים סמליים כשזה נדרש, ולמקד את פעולות הקבצים שלך עם Robocopy.
תזכור, המפתח לא רק בפתרון של בעיה מיידית, אלא גם בהבנה של כיצד אלו השיטות יכולות לעבוד בהרמוניה כדי להתמודד עם מגוון של אתגרים הקשורים לקבצים.
Source:
https://adamtheautomator.com/destination-path-too-long/