לדלג לתוכן

Dos/פקודת set ו-קובצי אצווה

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
< Dos

קבצי אצווה

[עריכה]

מהו קובץ אצווה של MS-DOS?

[עריכה]

עד עכשיו בשביל לשלוח פקודות לDOS היינו צריכים להיכנס לcmd.
קיימים קבצים המכילים פקודות של DOS וכשמפעילים אותם הם שולחים את הפקודות לcmd. קבצים אלו נקראים "קבצי אצווה של MS-DOS" או בWindows 7 "קבצי אצווה של Windows".

יצירת קובץ אצווה פשוט

[עריכה]


בשביל ליצור קובץ אצווה אנו צריכים עורך טקסט כלשהו (הכי פשוט ונוח הוא Notepad של Microsoft).
נכתוב תוכנית שתציג את הפלט "!Hello world". התוכנית דומה לתוכנית הראשונה שלמדנו עם עוד פקודה שנוסיף.

התוכנית נראית כך:

echo off 
echo Hello World 
pause

נעבור על כל שורה.
השורה echo off אומרת לDOS לא להציג את המיקום שבו הוא נמצא echo off (פרק 2)
!echo Hello world אומר לDOS להציג את הפלט "!Hello world".
הפקודה pause אומרת לDOS לחכות עד שמקש כלשהו יילחץ ולאחר שנלחץ מקש להמשיך הלאה, במקרה שלנו לסגור את התוכנית.
אם נכתוב את תוכנית ללא pause התוכנית פשוט תכתוב Hello world! ותסגר לפני שנספיק לראות מה קרה.
לאחר שהבנו נוכל לשמור. נכנסים ל"קובץ>>שמירה בשם.." לכתוב בשם התוכנית לדוגמא "hello world.bat" ובסוג הקובץ לשנות לAll files. שימו לב שאתם משנים אחרת המחשב יציג את מה שכתבנו כמסמך טקסט.
כמו שאתם רואים הקובץ שנוצר לנו הוא קובץ bat (קיצור של batch file) שאומר למחשב להפעיל אותו בתוכנית cmd.

עכשיו אפשר להריץ את התוכנית ומה שנקבל יהיה כזה:

Hello world!
Press any key to continue...

הפקודה set ומשתנים

[עריכה]

הגדרת משתנים ושימוש בערך שבתוכם

[עריכה]

בפרקים הקודמים השתמשנו בפקודות שכותבות מחרוזות על המסך. מה קורה כשרוצים להכניס קלט מהמשתמש או להכניס מידע כלשהו לתוך משתנה?
הפקודה set מכניסה לתוך משתנה ערך כלשהו (מספר, מחרוזת או תו) שבו היא יכולה להשתמש בהמשך התוכנית.
לדוגמא נרצה להכניס את המספר 5 לתוך תא בשם a ואז להדפיס את הערך שבמשתנה.

התוכנית תראה כך:

echo off 
set a=5 
echo %a%
pause

בשורה 2 רואים שכשהכנסנו ערך למשתנה כתבנו רק את האות a אך כשאנו מציגים את הערך שבתוכו כתבנו %a%.

DOS יודע שלאחר פקודת echo נמצאת המחרוזת שהוא צריך להציג, אך ברגע שכתבנו %a% הוא יודע שהוא צריך לקרוא את הערך שבמשתנה שבין סימני ה% ולהדפיס אותו. אם היינו כותבים echo a היינו מקבלים כפלט את האות a.

קלט משתמש וטיפול במשתנים

[עריכה]

כמעט כל תוכנית צריכה לקבל קלט מהמשתמש, אם זה מספר, שם או כל דבר אחר. בפקודה set יש אפשרות להכניס למשתנה ערך כלשהו שהמשתמש מכניס.

הפקודה נראית כך:

set /p a=%=%

כמו שאתם רואים, לאחר הפקודה set יש סימון של p/ הסימון אומר לDOS לקבל ערך מהמשתמש ולהכניס אותו לתא a.

אם רוצים להוסיף הודעה לפני הקלט הפקודה תראה כך:

set /p a="Your message:" %=%

מאוד רצוי להוסיף הודעה אחרת המשתמש לא יבין למה הסמן מהבהב.
לאחר שקיבלנו ערך מהמשתמש לפעמים נצטרך "לטפל" בו. בפקודה set יש עוד אפשרות להכניס ערך כלשהו שקשור למשתנים אחרים (או לאותו משתנה).

הפקודה תראה כך:

set /a a=(expression)

שכמובן במקום הexpression אנו נכניס ביטוי כלשהו, לדוגמא:

set /a a=%a%+5

הסבר: התוכנית מכניסה למשתנה a את הערך של a ומוסיפה לו 5 (אם הערך שבמשתנה אינו מספר הערך ישאר כמו שהוא).

עכשיו תורכם:

כתוב תוכנית הקולטת 2 מספרים מהמשתמש מחברת את סכומם ומציגה את תרגיל החיבור על המסך. לדוגמא, המשתמש הכניס 5 ו-2 התוכנית תציג 7=5+2


עוד על הפקודה set

[עריכה]

הפקודה set לבד מחזירה את שמות כל המשתנים ולידו יהיה כתוב את הערך שבתוכו. לדוגמא OS=Windows_NT (כש OS זה שם המשתנה ן Windows_NT זה הערך שלו).
אם נרצה להציג את המשתנים המתחילים באות כלשהי או בביטוי כלשהו נכתוב: set a וDOS יציג לנו את שמות כל המשתנים המתחילים באות a. אפשר להחליף את האות a בביטוי כמו com ונקבל את שמות המשתנים ששמם מתחיל בcom.

הרחבות

[עריכה]

הרחבה על הפקודה echo off

[עריכה]

לאחר שלמדנו על קבצי אצווה נוכל להוסיף לפקודה echo off את הסימן '@'. משמעות הסימן הזה היא ש-DOS לא יציג את השורה הזאת כשמפעילים את התוכנית. עד עכשיו כשרשמו echo off ראינו את השורה של הפקודה ורק אחרי זה לא הוצג המיקום. כשמשתמשים בecho off@ המחשב לא יציג את המיקום בכלל (אם הפקודה רשומה בהתחלה) ואנחנו מיד נראה רק את מה שרשמנו.

משתנים מיוחדים

[עריכה]

יש לDOS משתנים שמכילים ערכים הקשורים למחשב. ברשימה תוכלו למצוא כמה מהם. אם תרצו את כל המשתנים, פשוט כתבו set בcmd. לדוגמה רשמו כך: %set /p a=%number_of_processors

שם המשתנה ערך
OS שם מערכת ההפעלה
SystemDrive הכונן שבו מאוחסנת מערכת ההפעלה
USERNAME שם המשתמש הפעיל
windir התיקייה בה מאוחסן הWindows
COMPUTERNAME שם המחשב
NUMBER_OF_PROCESSORS מספר הליבות במעבד
RANDOM הפקת מספר רנדומלי
הפרק הקודם: פקודת set ו-קובצי אצווה הפרק הבא:
פקודות Dir ו-cd תרגילים פקודת cls