02-09-2007, 21:39
|
|
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
|
|
חבר מתאריך: 07.10.04
הודעות: 13,777
|
|
תנשום עמוק :)
ההסבר הוא מאוד פשוט למען האמת... מצד שני אני כתבתי את השורה אז זה נראה לי הגיוני.. אבל אני אנסה להסביר.
קוד:
for /f "tokens=*" %i in ('dir /b') do
החלק הזה של הפקודה אומר "עבור כל אחד מהשורות של הפלט של הפקודה בסוגריים בצע"
הפקודה בסוגריים (dir /b) מציגה את שמות הקבצים בלבד.
i% זה המשתנה אליו נכנסת כל שורה לצורך ביצוע הפעולה.
"tokens=*" זה למקרה שיש רווחים בשמות הקבצים, ככה שם הקובץ המלא נכנס למשתנה i% (אחרת הוא מכניס את המילה הראשונה ל i%, השנייה ל j% וכן הלאה)
קוד:
@if NOT "%~xi" == ".pdf" if NOT "%~xi" == ".doc"
עכשיו אנחנו אחרי ה do, הפקודה הזו מתבבצעת לגבי כל אחד מהשורות של הפלט מלמעלה, i% מחזיק את שם הקובץ הנוכחי איתו נעבוד.
החלק הזה של הפקודה מוודא שסיומת הקובץ (xi~% מסמל סיומת של קובץ ששמו מוחזק במשתנה i%) הוא אינו pdf, ולא doc.
הפקודה היא פשוטה, אם התנאי מתקיים, תמשיך לבצע את הפקודה, בשביל זה הבדיקה היא "אם הסיומת לא pdf, אם הסיומת לא doc", על אותו עקרון אתה יכול להוסיף כמה סיומות שאתה רוצה.
החלק הזה מתבצע בתנאי שכול התנאים הקודמים התקיימו, והוא מחליף את שם הקובץ שהתקבל לאותו השם אבל עם סיומת txt.
שמות הקבצים מוקפים במרכאות במקרה ויש רווחים בשם הקובץ.
שים לב:
ניתן להרחיב את שינוי השמות גם לתתי תקיות, תוסיף לפקודת ה dir מההתחלה s/ ותקבל גם את תקיות המשנה.
לגבי השאלה השנייה שלך:
כן, ניתן ליצור ps1 scripts, או בקיצור קבצים עם סיומת ps1.
אבל כברירת מחדל סקרפטים מבוטלים ב powershell ויש לבצע שינוי בregistry ע"מ לאפשר אותם... כך שאל תיבהל אם תכין סקריפט והוא לא יעבוד
_____________________________________
נערך לאחרונה ע"י קוביבי בתאריך 02-09-2007 בשעה 21:40.
סיבה: חידוד הסבר על xi~%
|