 |
/images/archive/gallery/254/718.jpg
עטיפת הסרט matrix reloaded  |
|
|
אחרי שטעמנו על קצה המזלג את עקרונות התכנות, הגיע הזמן להתקדם. בעזרת קודים פשוטים אפשר למיין את התמונות מהמצלמה הדיגיטלית וגם לקבל עדכונים שוטפים לגבי הדיסק הקשיח |
|
|
|
|
|
 |
אי-אפשר ללמוד לתכנת בשתי דקות,וגם אין סיבה שכל מי שמדליק מחשב יידע את כל סודות הקודים, אבל כבר בשבוע שעבר ראינו שבעזרת כמה צעדים פשוטים כל אחד יכול לכתוב תוכנות קצרות ומועילות. אחרי שערכנו היכרות בסיסית עם קובצי סקריפט מסוג Batch, שאינם נתפסים כשפת תיכנות מלאה על אף היכולות המעניינות שלהם,אפשר לעלות מדרגה. לא גבוהה מדי, אבל עדיין מדרגה.
הפעם, בחלק השני של המדריך למתכנת המתחיל, נתמקד בשפת תיכנות מיוחדת שמאפשרת לנו לבצע משימות
בסיסיות במערכת ההפעלה. השפה הזאת נקראת VB-Script, והיא למעשה גרסה מצומצמת של שפת התיכנות Visual Basic. באמצעות VB-Script אפשר לבצע פעולות מתוחכמות כמו מיון קבצים או ניקוי הדיסק הקשיח. למעשה, הפוטנציאל שלה גדול עד כדי כך שאפילו וירוסים מסוימים נכתבו בה. בשורות הבאות נציע שתי תוכנות שימושיות ולא מסובכות מדי: הן לא יהפכו אתכם לתותחי תיכנות, אבל הן יספקו טעימה ראשונה ובסיסית מן העולם המרתק שהופך את המחשבים שלנו לנפלאים כל-כך.
|
 |
 |
 |
 |
|
 |
 |
 |
 |
|
מבצע היכרות
|
 |
|
 |
 |
 |
|
באופן מסורתי רוב התוכנות בעולם כתובות ב"שפת מכונה" (Machine Code), אבל קשה מאוד להשתמש בה ולכן רוב המתכנתים משתמשים בשפות נוחות יותר, כמו + +C. במקרה כזה התוכנה עוברת המרה לשפת מכונה על-ידי תוכנה בשם "קומפיילר". זה מסבך קצת את העניינים, ולכן אחד היתרונות של VB-Script הוא הדילוג על השלב הזה.תוכנות בשפה זו נכתבות באמצעות כל עורך טקסט פשוט,וכל מה שצריך לעשות זה להוסיף סיומת VBS בעת שמירת הקובץ. מערכת ההפעלה חלונות מכילה רכיב שמזהה את הקבצים הללו ומסוגל לבצע את הפקודות. את עורך הטקסט תוכלו למצוא תחת התפריט "התחל" - "עזרים".
כדי להבין מעט את הקודים הבאים, חשוב לדעת כי בתיכנות יש צורך להשתמש בהרבה משתנים, שהם דרך לאחסן נתונים. כך, למשל, משתנה יכול לאחסן את התאריך הנוכחי או שם של קובץ שבו אנחנו מטפלים. כדי להקל את קריאת התוכנה, נהוג לתת למשתנים שמות ארוכים שמורכבים לעתים מכמה מילים. במקרה כזה, האות הראשונה של כל מילה היא אות גדולה, וכך קל יותר לקרוא את הקוד.
|
 |
 |
 |
 |
|
 |
 |
 |
 |
|
התוכנה הראשונה
|
 |
|
 |
 |
 |
|
יש לכם מצלמה דיגיטלית? גם אתם בוודאי מיואשים מהנטייה שלה להפיק תמונות בעלות שמות חסרי משמעות. בעזרת סקריפט פשוט בשפת VB-Script אפשר למיין את הקבצים באופן אוטומטי.
הסקריפט שלפניכם יעבור על כל התמונות בתיקיה שהוגדרה מראש, יבדוק מה התאריך של כל אחת, ועבור כל תאריך ייצור תיקיה משלו. לאחר מכן כל תמונה תועבר לתיקיה המתאימה, על-פי התאריך. במהלך הקלדת הקוד המצורף (תוכנה 1) חשוב להקפיד בשורה השמינית על אותיות גדולות במילה JPG.
הסבר לתוכנה: בשורות 1 ו-2 אנחנו קובעים היכן נמצאות התמונות הבלתי מסודרות (:\photos\Unsorted), כפי שהעתקנו אותן מהמצלמה הדיגיטלית, והיכן יהיו התיקיות המסודרות של הת מונות (c:\photos\Sorted). בשורות 3 ו-4 אנחנו מפעילים כלים לניהול הקבצים. הפקודות בשורות 5 עד 7 בודקות את התיקיה שמכילה את התמונות, ועוברות על הקבצים אחד אחרי השני. בשורה השמינית אנחנו בודקים אם הקובץ הוא תמונה, ואם כן - שורות 9 עד 14 בודקות באיזה תאריך היא צולמה. שורות 18-15 מוודאות כי לתאריך של התמונה אין תיקיה באותו שם. אם אין, אנחנו יוצרים תיקיה. שורות 19 עד 24 מעבירות את הקובץ לתיקיה המתאימה, ושורות 26-25 מעבירות את התהליך אל הקובץ הבא. בסיום, השורה האחרונה תודיע כמה קבצים טופלו. בעת הפעלת התוכנה נקבל באופן רציף הודעות על המתרחש, אבל מי שרוצה לוותר על אמצעי הבקרה הזה יכול למחוק את השורות 16 ו-21.
|
 |
 |
 |
 |
|
 |
 |
 |
 |
|
התוכנה השנייה
|
 |
|
 |
 |
 |
|
אם אי-פעם נגמר לכם המקום בכונן הקשיח באמצע הורדה חשובה, אתם מכירים את התסכול. בעזרת התוכנה השנייה תוכלו לקבל עדכונים בדואר אלקטרוני על מצב הדיסק. הקוד המצורף בודק כמה מקום פנוי יש בכל אחד מהכוננים, ושולח אימייל לכתובת שתבקשו. מומלץ להריץ את התוכנה בכל כמה ימים, ואת זה אפשר לעשות באופן אוטומטי על-ידי מתזמן המשימות של חלונות.
הסבר לתוכנה: בשורות 1 עד 4 אנחנו מבקשים מחלונות להכין עבורנו רשימה של כל הדיסקים הקשיחים. 3 השורות הבאות בודקות כמה מקום פנוי יש בכל כונן, ומכינות רשימה שתישלח באימייל. שורות 8 עד 20 אחראיות לקביעת המאפיינים השונים של ההודעה, ובשורה 21 ההודעה נשלחת. חשוב מאוד: יש לשנות את שורות 9, 10 ו-17 בהתאם להגדרות האימייל שלכם.
|
 |
 |
 |
 |
|
 |
 |
 |
 |
|
רוצים עוד?
|
 |
|
 |
 |
 |
|
המדריך למתכנת המתחיל נועד לתת רק טעימה קטנה מהיכולות הבלתי מוגבלות של הסקריפטים. על-ידי שימוש בדמיון וביצירתיות ניתן לפתח את הדוגמאות הללו לשלל כיוונים. בהמשך הדרך, מי שירצה ללמוד לעומק יוכל לנסות שפות מתקדמות יותר, כמו הגרסה המלאה של Visual Basic ואפילו יותר מכך.
מלבד הסקריפטים שהצענו, תוכלו למצוא מאות דוגמאות באתר הבא. נוסף על כך, אם תרצו תוכלו להיעזר גם באתר הנהדר הבא, המציע רשימה מעמיקה של פקודות וטכניקות בשפת VB-Script. בכל מקרה, אם נתקלתם בבעיות בכתיבה או בהרצה, נשמח לסייע לכם בפורום "המחשב השתגע? ! " באתר NRG מעריב. בהצלחה.
|
 |
 |
 |
 |
|
 |
 |
 |
 |
|
תוכנה 1
|
 |
|
 |
 |
 |
|
SourceDir = "c:\photos\Unsorted" TargetDir = "c:\photos\Sorted" Set FileObj = CreateObject("Scripting.FileSystemObject") Set ShellObj = CreateObject("Shell.Application") Set Folder = FileObj.GetFolder(SourceDir) Set Files = Folder.Files for each file in files If Instr(Ucase(file),".JPG") <> 0 then Set FolderContent = ShellObj.NameSpace(SourceDir) FileClean = Mid(File,Instrrev(File,"\")+1) Set FolderContentItem = FolderContent.ParseName(FileClean) PicTaken = FolderContent.GetDetailsOf(FolderContentItem,25) WhereSpace = instr(PicTaken," ") FileDate = replace(left(PicTaken,WhereSpace-1),"/"," ") If FileObj.FolderExists(TargetDir & "\" & FileDate) = False Then Wscript.Echo ("Creating Folder " & TargetDir & "\" & FileDate) FileObj.CreateFolder TargetDir & "\" & FileDate End If SourceFile = SourceDir & "\" & File.Name DestinationFile = TargetDir & "\" & FileDate & "\" & File.Name Wscript.Echo ("Moving File " & SourceFile & " To " & DestinationFile) FileObj.MoveFile SourceFile, DestinationFile End If FileCount = FileCount + 1 Next Wscript.Echo("Done!. Moved " & FileCount-2 & " Files.")
|
 |
 |
 |
 |
|
 |
 |
 |
 |
|
תוכנה 2
|
 |
|
 |
 |
 |
|
Set WMIObj = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set Disks = WMIObj.ExecQuery _ ("Select * from Win32_LogicalDisk Where DriveType = 3") For Each Disk in Disks Message = Message & "Disk " & Disk.DeviceID & ",Free Space: " & Disk.FreeSpace Next Set EmailObj= CreateObject("CDO.Message") EmailObj.From = "erezrb@maariv.co.il" EmailObj.To = " erezrb@maariv.co.il" EmailObj.Subject = "Disk Space Report" EmailObj.Textbody = Message EmailObj.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/ configuration/sendusing") = 2 EmailObj.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/ configuration/smtpserver") = _ "mail.maariv.co.il" EmailObj.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/ configuration/smtpserverport") = 25 EmailObj.Configuration.Fields.Update EmailObj.Send
|  |  |  |  | |
|
|
|
|
 |
|
|
|
|