1.5 באצ' סקריפט הרצאה
פרק זה מתבסס על כך שיש לכם ידע בסיסי בתכנות. שימו לב לעבור על קורס התכנות שלנו לפני שאתם ממשיכים בקורס זה.¶
קובץ Batch¶
- קובץ Batch הוא קובץ טקסט שמכיל פקודות ש-Shell מריץ. הסיומת המקובלת לקובץ כזה היא
.bat. כדי ליצור קובץ Batch, פתחו את Notepad וצרו קובץ חדש בשםscript.bat. בתוכו נכתוב את הסקריפט הראשון שלנו. - כתבו את הסקריפט הבא:
@echo off
:: this is my script!
:: this program prints hello world!
set message=Hello World
echo %message%
- בשורה הראשונה, הפקודה
@echo offמבטלת את הדפסת הפקודות ב-Shell. ברירת המחדל היא שכל פקודה מריצה את עצמה ב-Shell, וזה יכול למלא את המסך במידע מיותר. כשמשתמשים ב-@echo off, רק הפלט הסופי יודפס. - השורות השנייה והשלישית הן הערות (comments). בשפת Batch ניתן להוסיף הערות בעזרת
::אוRem. - בשורה הרביעית אנחנו יוצרים משתנה בשם
messageומאחסנים בו את הערך "Hello World" בעזרת הפקודהset. - בשורה האחרונה אנחנו מדפיסים את ערך המשתנה
messageבעזרת הפקודהecho
כדי להריץ את הסקריפט, שמרו את הקובץ ב-Notepad ואז הריצו אותו ב-Shell באמצעות הפקודה script.bat.

משתנים¶
- סקריפטים ב-Batch יכולים לקבל ארגומנטים בזמן הריצה. אנחנו יכולים לגשת אליהם דרך המשתנים
%1,%2,%3וכן הלאה.
-
כשנריץ את הסקריפט ונספק לו ארגומנטים, הפלט יהיה בהתאם לארגומנטים שנעביר.

-
כשאנחנו רוצים לשמור מספרים כמשתנים ולעשות איתם פעולות חשבוניות, נשתמש בדגל
/Aעם הפקודהset:
הפקודה הזו מחברת את שני המספרים ומדפיסה את התוצאה (15).

תנאים¶
- שפת Batch תומכת בתנאים (if ו-else), כך שנוכל לבצע פעולה מסוימת בהתאם לתנאים שמספקים:
@echo off
echo %1
echo %2
if %1%==2 (echo "The value is 2") else (echo "Unknown value")
if %2%==4 (echo "The value is 4") else (echo "Unknown value")
הקוד הזה בודק אם הערכים של המשתנים %1 ו-%2 שווים ל-2 ו-4 בהתאמה, ומדפיס פלט בהתאם.
לולאות¶
- ב-Batch קיימת לולאת
for, המאפשרת לנו לעבור על סדרה של ערכים. לדוגמה, אם נרצה לרוץ על סדרת מספרים, נוכל להשתמש בדגל/L:
- אם נרצה לעבור על רשימות של מחרוזות, נוכל להשתמש בלולאת
forגם עבורן:
הקוד הזה מדפיס כל יום בשבוע.
- דוגמה נוספת: יצירת 1000 עותקים של קובץ באמצעות לולאת
for:
פיצ'ר: Delayed Expansion¶
- ב-Batch יש תופעה מוזרה: כשאנחנו משנים ערכים של משתנים בתוך לולאות, לא תמיד נוכל לגשת לערכים המעודכנים. זה קורה משום ש-Batch לא תמיד מחדש את הערכים בזמן אמת.
- כדי להתמודד עם הבעיה הזו, נשתמש ב-Delayed Expansion. כדי להפעיל את הפיצ'ר הזה, נכתוב את הפקודה
setlocal EnableDelayedExpansionבתחילת הסקריפט. הנה דוגמה:
@echo off
setlocal EnableDelayedExpansion
:: count to 5 storing the results in a variable
set var=0
FOR /l %%G in (1,1,5) Do (
echo !var!
set /a var+=1
)
echo Total = %var%
- כעת הפלט יהיה:
אז Batch זה לא משהו?¶
- עברנו על הפיצ'רים העיקריים של Batch, אבל אם אתם מכירים שפות תכנות אחרות כמו Python, יכול להיות שתרגישו ש-Batch לא הכי נוח ומודרני.
- נכון, Batch הוא שפת סקריפטים ישנה מאוד, וכיום יש לו חלופה טובה יותר בשם PowerShell, שהיא הרבה יותר גמישה ומודרנית. נלמד עליה בפרקים הבאים.
- למרות ש-Batch מיושן, הוא עדיין נמצא כמעט בכל מערכת Windows ויש הרבה קוד Batch שצריך לדעת לקרוא ולהבין, במיוחד כשמתעסקים בניהול מערכות או שרתים מבוססי Windows.