המדריך המלא: מציאת קבצים כפולים ב-PowerShell
מנוע החיפוש המובנה של Windows שופט קבצים לפי שמם או תאריך היצירה שלהם. אך מה קורה כשמשתמש משכפל קובץ, משנה את שמו ומעביר אותו לתיקייה אחרת? הקובץ חומק מהרדאר וגונב נפח יקר. במדריך מקצועי זה, נפריד את העבודה לשני שלבים (Best Practice לסיסטם): יצירת דוח ביקורת (Audit), ולאחריו – סקריפט בטוח המעביר את הכפילויות לסל המיחזור.
1. איך הטריק הזה עובד?
אנו משתמשים בפקודת ה-PowerShell שנקראת Get-FileHash. הפקודה קוראת את התוכן הבינארי של הקובץ ומעבירה אותו דרך אלגוריתם מתמטי (SHA256). אם לשני קבצים יש בדיוק את אותו ה-Hash – הם זהים ב-100%, גם אם לאחד קוראים "תקציב_2024.xlsx" ולשני קוראים "גיבוי_זמני_משה.xlsx".
2. שלב 1: סריקה מקדימה והפקת דוח (Audit)
חוק ברזל: לעולם אל תמחקו קבצים לפני שראיתם בעיניים אילו קבצים עומדים להימחק. הסקריפט הבא אינו מוחק דבר; הוא סורק את התיקייה ומייצר קובץ אקסל (CSV) מסודר המציג את כל קבוצות הקבצים הכפולים והנתיב המדויק שלהם.
* הערה: סריקה של תיקיית רשת עצומה (מאות ג'יגות) עלולה לקחת זמן רב. הסקריפט מציג סרגל התקדמות טקסטואלי בחלון ה-PowerShell.
3. שלב 2: השמדת כפילויות (העברה לסל המיחזור)
לאחר שעברתם על דוח ה-CSV ואישרתם שהכל תקין, הגיע הזמן לפנות את המקום. הפקודה הרגילה של PowerShell (Remove-Item) משמידה קבצים לחלוטין ולתמיד. לכן, בסקריפט זה אנו "שואלים" פונקציה חכמה מתוך סביבת ה-Visual Basic של חלונות, המאפשרת לנו להעביר את הקבצים לסל המיחזור, כרשת ביטחון למקרה שמשתמש יתחרט.
* הסקריפט שומר את העותק הראשון בכל קבוצת כפילויות, ואת השאר מעביר לסל המיחזור של המשתמש הנוכחי.
חישוב Hash לקבצי וידאו כבדים יכול להכביד על המעבד (CPU). אם אתם מחפשים כפילויות רק בסוג קובץ מסוים (למשל תמונות וגיבויים), תוכלו לערוך את שורת ה-Get-ChildItem בסקריפט ולהוסיף לה את הפרמטר: -Filter "*.pdf" כדי לזרז משמעותית את זמן הריצה.