BATCH FILES , Dos ופרמטרים

capslock1

New member
BATCH FILES , Dos ופרמטרים

שלום, אני מעוניין לכתוב batch file שמקבל פרמטרים. הבעיה היא שאני לא יודע מראש כמה פרמטרים הוא יקבל. האם יש דרך לבדוק את מספר הפרמטרים? אני מעוניין לעבר על כל אחד מהפרמטרים (שמות קבצים) ולבצע עליהם פעולות. תודה
 

KKnDoIt

New member
כן, יש -->

ראשית, הצעה: אלא אם כן יש לך סיבה ממה טובה לבחור ב- BATCH, אני ממליך כי תבחר בסביבה אחרת: VB Script או PERL. BATCH היא ספת סקריפטינג רזה, קשה ללימוד, ומאחר והיא לא מתנהגת כמו ספות סקריפטינג פרוצדורליות מודרניות: לא מתעלמת מתווים לבנים, ובוודאי שאינה חופשית צורה (?), אין אמצעי "ציטוט", תיעוד עלוב, ועוד בעיות. בכל אופן אני מכיר את השפה לא רע, כך שאתה יכול לשאול, אבל הדבר הטוב ביותר הוא להמנע ממנה מלכתחילה. ולשאלתך: אין משתנה המחזיק את מספר הפרמטרים. אם אתה רוצה לעבור על הפרמטרים, תוכל להשתמש בצורה הבאה:
@echo off echo Here is a list of all the arguments given to the program: :LOOP if "%1"=="" goto END echo %1 shift goto LOOP :END echo press any key to finish. pause> nul​
 

capslock1

New member
הסיבה שבחרתי לעבוד עם שפה

סקריפטים זו - כי היא כללית וניתן להריץ את הסקריפטים האלה על כל מחשב שבו מותקן windows. אני בטוח ש- VB וגם perl נותנות מגוון אפשרויות רחב יותר וגם הרבה יותר יעילות אבל בהתחשב בעובדה שאני לא יודע אם המשתמש שיריץ סקריפטים אלו יתקין perl וגם אם ארצה להסביר לו לא בטוח שהוא יבין איך עושים את זה בקלות. אשמח לשמוע ממך האם קיימת דרך קלה להשתמש בסריפטים חכמים יותר מבלי לסבך את המשתמש בפשוט בהתקנות מיותרת של תוכנות "צד שלישי" אשמח לשמוע תגובות לענין זה. תודה.
 

annefan

New member
מה יש?

VBscript יש על כל מחשב עם חלונות 98 ומעלה. אני לא אמליץ לך עליה, אלא אם כן ממש אין לך ברירה.
 

capslock1

New member
אני לא בטוח שאני מבין משהו...

למיטב ידיעתי VB script מיועדת להרצת סקריפטים בדפדפן האינטרנט לא? אני לא כותב סקריפטים לדפדפן אינטרנט אלא פקודות קבצים לניהול הדיסק הקשיח ומערכת הקבצים. האם VB טובה גם בשביל שימוש זה? אודה לכם עבור תגובות...
 

vinney

Well-known member
כמה דברים

א. VB נותן לך EXE ב. גם PERL יכול ליצור לך EXE אם ממש רוצים ג. תתקין BATCH שמריץ סקריפט של PERL, משתמש לא ירגיש בהדל. ד. תשתמש בVBSCRIPT, כמו שאמרו. למה BATCH FILES???
 

capslock1

New member
תוכל בבקשה לפרט לגבי ג.

אשמח אם תוכל לפרט יותר לגבי סעיף ג - או אולי תוכל להפנות אותי למקורות (אפשרי גם באנגלית). אני לא מבין מה הכוונה להתקין BATCH שמריץ סקריפט של PERL? לי באופן אישי יש PERL על המחשב אבל בוודאות המשתמשים שיעבדו עם סקריפט זה, לא יהיה להם PERL ואני לא רוצה לסבך אותם עם התקנות מיותרת.
 

vinney

Well-known member
אם אתה לא רוצה לסבך

אז יש את האופציות האחרות. הבנתי שאתה לא רוצה שמשממשים יריצו PERL כי קשה להם מסיבה עלומה כלשהי, אבל אם העניין הוא לא להתקין כי אין להם כרגע, אז זה באמת מיותר להתקין PERL בשביל סקריפט אחד. VBSCRIPT יכול לעשות את זה מצוין, תכתוב VBSCRIPT, תשמור בקובץ WSF והוא ירוץ על כל WINDOWS 98+.
 

capslock1

New member
אולי תוכל לתת לי דוגמא קטנה לענין

למשל אני רוצה לכתוב סקריפט שמעתיק קובץ מתיקיה לתיקיה: ככה אני אכתוב אותו ב-DOS:
copy 1.txt c:\tmp\1.txt​
וכמובן אשמור אותו כקובץ run.bat תוכל לתת לי את אותה הדוגה ב- VB SCRIPT ? תודה....
 

vinney

Well-known member
הבנתי שהקריפטים שלך יותר מורכבים

לא? אם הבנתי נכון, אתה רוצה לבנות SHELL SCRIPT במובן הUNIXי של המילה, הBATCH לא יספיק לזה.
 

capslock1

New member
אכן אתה צודק - הם יותר מורכבים

משהו בסיגנון shell script פשוט לא היה לי ברור אם אפשר לבצע כאלו פקודות ב- VB SCRIPT. עכשיו אני מבין שאפשר... חשבתי ש VB SCRIPT מיועד רק לדפדפן אינטרנט...
 

KKnDoIt

New member
בו נעשה קצת סדר:

באופן כללי, סקריפטים הרצים מחשבים אישיים, מיועדים לאוטומציה של משימות פשוטות בד"כ. את אותן משימות אפשר, בד"כ, לבצע באמצעות כל שפת תכנות: C++, JAVA, C, ואפילו אסמבלי. ההבדל בין הסביבות השונות, מבחינתך, בא לידי ביטוי בשני מובנים: 1. הקלות שבה ניתן לכתוב תוכנית שמבצעת את המשימה. 2. הדרישות שהתוכנית שלך מציבות בפני המשתמש: אם אתה כותב EXE, הוא (בד"כ) לא צריך שום תוסף על המחשב. אם אתה כותב תוכנית בשפת תיסרוט מסויימת, הוא יצטרך פרשן (interpreter). עבור PERL, הוא יצרך את התוכנית PERL, עבור Python את הפרשן של פייון, וכ'. עבור BATCH ו- VBScript, הוא לא צריך שום דבר, כי הפרשנים עבור תוכניות כאלה כבר מותקנים. לגבי הסעיף הראשון, עניין הקלות, אין שום ספק שכתיבה של SCRIPT נוחה יותר ללימוד וגמישה יותר משפות תכנות מהודרות (אני לא זוכר את השם הרשמי של סוג כזה של שפה). למעשה, ספות תיסרוט נוצרו במיוחד כדי לבצע את המשימות הללו, ולכן הן הבחירה העדיפה, ויש כמה שפות מהן אפשר לבחור. לעניות דעתי, VBSCript היא בחירה טובה למשימות אותן אתה מתאר. היא גם גמישה, גם מתועדת היטב, וגם לא מצריכה התקנה של שום רכיב בצד הלקוח (כי המפרשים שלה כבר נמצאים במערכת ההפעלה), וגם מאפשרת לבצע דברים מורכבים מאוד בחלונות 98 ומעלה, ועוד יותר בחלונות XP ומעלה. באופן ספציפי לגבי בחירה נין BATCH ל- VBScript: יש משימות ספציפיות, מסויימות וקטנות מאוד, שבהן עדיפה תוכנית BATCH. למשל, אם אתה רק צריך מספר קטן של קבצים או ספריות, BATCH עדיפה. משימות מורכבות יותר, יתכן ש- BATCH תהיה עדיפה (שוב, במקרים ספצפיים), אך עקומת הלימוד שלה תלולה מאוד (כלומר: קשה מאוד ללמוד להשתמש בה), ולכן היא פשוט לא שווה את ההשקעה. לגבי תיעוד: ----------- למיקרוסופט יש תיעוד מעולה על VBScript. תוכל לקרוא באופן מכוון באתר שלהם או להוריד קובץ עזרה (ראה קישור מצורף). לגבי BATCH, התיעוד גרועה, ומה שיש זמין בעזרה של חלונות: הכנס לעזרה של חלונות, חפש "command-line reference" (בלי המרכאות), והמשך משם.
 

Lucciano

New member
לא לשכוח רק...

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

vinney

Well-known member
בד"כ מקפיצים הודעה ומבקשים אישור

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

Lucciano

New member
המשך

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

omersela

New member
יש תוכנית בשם Perl2Exe

באתר http://www.indigostar.com/perl2exe.htm אם מותקן לך Perl על המחשב, אזי זו העדיפות הטובה ביותר, לענ"ד. זה לא מצריך התקנה, רק להריץ את התוכנית על התוכנית שלך. ניתן לייצר גם קובץ ללא ה - Console אם משתמשים ב --gui.
 
למעלה