22-12-2006, 12:09
|
|
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
|
|
חבר מתאריך: 07.10.04
הודעות: 13,777
|
|
אין בעייה...
אני מדבר רק על הדוגמה השנייה, את הראשונה תבין לבד
יצרתי עץ תיקיות אצלי על המחשב:
קוד:
c:\bla
c:\bla\bla2
c:\bla\bla3
הרצתי 3 פקודות, הראשונה והאחרונה: dir -R, שהיא מקבילה ל - dir /s בCMD הרגיל, מציגה את כל הקבצים, כולל אלו שנמצאים בתתי התיקיות, כדי שתראה את המצב של הקבצים לפני ואחרי הרצת הפקודה.
הפקודה של השינוי היא הפקודה האמצעית:
קוד:
dir -R | where {$_ -match "!#\$"} | % { ren $_.FullName $_.Name.Replace(".!#$","") }
הפקודה הזו מורכבת מ-3 חלקים שמופרדים בצינורות (הסבר על צינורות ניתן בעבר באשכול שניסיתי להחיות על powershell אבל הוא מת מחוסר עניין לציבור )
בגדול זה אומר שפלט של פקודה הוא הקלט של פקודה שבאה אחריו.
אז 3 הפקודות הן:
מציג את כל הקבצים שנמצאים תחת התיקייה הנוכחית ותתי התיקיות.
הפלט עובר ל:
קוד:
where {$_ -match "!#\$"}
פקודה שמסננת את התוצאות ומחזירה רק שמות של קבצים ותיקיות שנגמרים ב: ".!#$"
והפלט של הפקודה הזו עובר ל:
קוד:
% { ren $_.FullName $_.Name.Replace(".!#$","") }
הפקודה הזו אומרת:
לכול (זה התו "%") אחד מהקלט המתקבל הרץ את הפקודה הבאה:
{שנה שם fullname (שזה שם הקובץ המלא, כולל התיקייה, לדוגמה c:\bla\bla2\bla1.txt.!#$) לאותו השם, אבל תחליף את המחרוזת ".!#$" במחרזת ריקה}
את 2 הפקודות הראשונות היה אפשר לאחד למעשה, וכך זה גם היה פועל יותר מהר, הפקודה אז הייתה נראית כך:
קוד:
dir -R -Include *.!#$ | % { ren $_.FullName $_.Name.Replace(".!#$","") }
וזהו
לעוד פרטים על powershell:
http://www.fresh.co.il/vBulletin/sh...ad.php?t=235955
עריכה:
חשבתי שלא הבנת את הפקודה, עכשיו ראיתי שרק ה-bla בלבל אותך...
סתם קראתי לקבצים ככה כי ככה היה יותר מהר ליצור את הבדיקה...
אני משאיר את ההסבר כי חבל לי למחוק את זה עכשיו
_____________________________________
נערך לאחרונה ע"י קוביבי בתאריך 22-12-2006 בשעה 12:12.
סיבה: אופס... לא שמתי לב..
|