מבוא לסקריפטים ב-Batch - היסודות שכל מנהל מערכות עדיין צריך¶
לפני שיש PowerShell, ולפני שיש אוטומציה מתוחכמת עם אובייקטים ו-pipeline, יש קובץ טקסט פשוט עם סיומת .bat, שממשיך לעבוד בכל מחשב ווינדוס בעולם בדיוק כמו שהוא עבד לפני עשרות שנים. זה סקריפט Batch, וגם היום, בעידן של כלים מתקדמים בהרבה, יש סיבות טובות ללמוד אותו.
למה בכלל ללמוד Batch כשיש פאוורשל¶
זו השאלה שכל מתחיל שואל, וזו שאלה הוגנת. התשובה היא שסקריפטי Batch פשוטים, זמינים בכל מערכת ווינדוס בלי שום דרישה מוקדמת, ורצים מהר בלי טעינת מנוע כבד. הרבה תהליכים ארגוניים ישנים עדיין רצים על סקריפטי Batch שנכתבו לפני שנים, ומי שלא מבין את היסודות שלהם פשוט לא יוכל לתחזק אותם. יותר מזה - להבין Batch נותן לכם תשתית מושגים - משתנים, תנאים, לולאות - שיעזרו לכם ללמוד כל שפה אחרת, כולל PowerShell, הרבה יותר מהר.
הפקודה הראשונה - קובץ bat פשוט¶
קובץ Batch הוא קובץ טקסט רגיל בשם something.bat, עם רצף פקודות שהיו רצות בדיוק כך בשורת cmd. הנה הדוגמה הכי בסיסית שיש:
השורה הראשונה, @echo off, מונעת מהסקריפט להדפיס כל פקודה שהוא מריץ, כדי שהפלט יהיה נקי. echo מדפיס טקסט, ו-pause עוצר את הריצה ומחכה שתלחצו על מקש כדי לראות את הפלט לפני שהחלון נסגר.
משתנים ב-Batch¶
משתנים ב-Batch מוגדרים עם set, ונקראים עם סימני אחוז מסביב לשם:
זה נראה פחות אלגנטי מ-PowerShell, אבל זה עובד, ובעיקר - זה עובד בכל מחשב ווינדוס בלי יוצא מן הכלל.
תנאים - if¶
הפקודה if בודקת תנאי ומחליטה מה לעשות בהתאם:
set /p מבקש קלט מהמשתמש ושומר אותו במשתנה. GEQ פירושה "גדול שווה" - Batch משתמש בקיצורים כאלה במקום סימנים כמו >=, וזה אחד הדברים שדורשים הסתגלות בהתחלה.
לולאות - for¶
לולאות ב-Batch נכתבות עם הפקודה for, שנראית קצת שונה מרוב השפות אבל עושה בדיוק את אותו דבר:
הסימן הכפול %%i נדרש בתוך קובץ סקריפט (בהרצה ישירה משורת הפקודה משתמשים בסימן בודד). זו אחת הפרטים הקטנים שתמיד תופסים מתחילים, ולכן חשוב לזכור אותה.
לולאה שימושית מאוד היא זו שעוברת על כל הקבצים בתיקייה:
זה בדיוק סוג המשימה שסקריפטי Batch עדיין נמצאים בשימוש בשבילה - ניקוי תיקיות, גיבויים אוטומטיים, ותהליכים תחזוקתיים פשוטים שרצים כמשימה מתוזמנת.
מגבלות שכדאי להכיר מראש¶
Batch לא בנוי לעבוד עם נתונים מובנים - הכל שם הוא טקסט, ופעולות כמו עיבוד רשימות מורכבות, קריאת קבצי JSON, או עבודה עם אובייקטים, פשוט לא קיימות בו בצורה סבירה. גם הטיפול בשגיאות מוגבל מאוד לעומת שפות מודרניות. ברגע שסקריפט מתחיל לגדול ולהתמורכב, זה בדיוק הרגע לעבור ל-PowerShell, שנבנה מהיסוד כדי לפתור את המגבלות האלה.
הדרך הנכונה ללמוד את זה¶
הגישה הכי טובה היא לא לנסות לשלוט ב-Batch עד הפרטים הכי מתקדמים, אלא להבין את היסודות שלו טוב מספיק כדי לקרוא ולתחזק סקריפטים קיימים, ואז לעבור ל-PowerShell לכל דבר חדש שאתם בונים. זה בדיוק הסדר ההגיוני, וזה גם הסדר שבו בנוי קורס ווינדוס בסיסי - מתחילים משורת הפקודה והבאצ', ורק אחר כך עוברים לפאוורשל לעומק. הכל בעברית, בחינם, עם תרגילים ופרויקט בכל פרק.
ואם קטע קוד ב-Batch מסרב לעבוד לכם ואתם לא מבינים למה (ה-%% הזה תפס לא מעט אנשים), הצטרפו לקהילה בדיסקורד ותשאלו שם.