עזרה בכתיבת סקריפט
-
לדעתי במצב שלו הכי פשוט משימה מתוזמנת, שנפתחת כל X דקות.
ואם הסקריפט לא מוצא את התוכנה פעילה הוא פותח אותה.או לופ אין סופי שתופס את הפרוסס עם waittoexit וברגע שיש יציאה, הלופ חוזר להתחלה
-
@clickone אמר בעזרה בכתיבת סקריפט:
או לופ אין סופי שתופס את הפרוסס
למה לופ אין סופי ?
אם מדבר שצריך לעבור X זמן -
@משחזר-מידע
כי נשמע לי שזה מה ש @aknvtchtk מחפש בסוף. רק שהוא חושב שהדרך הנכונה היא לבדוק כל X זמן.
במידה ואני טועה וזה לא מה שהוא מחפש, אלא באמת יש לו עניין שזה ייבדק כל X זמן, אז מה שצריך לעשות זה מתזמן המשימות עם משימה קבועה כל X זמן, שבה הוא בודק אם הפרוסס פעיל ואם לא אז הוא מריץ אותו כמו שכתבתי בשלב הראשון. -
טוב
אני יתחיל
tasklist יכול לענות לך אם פרוסס X פעיל
(תתחיל לעבוד על זה)
-
@משחזר-מידע @clickone @chagold אני רוצה עזרה בכתיבת סקריפט בבאש יש לי כבר סקריפט שיודע להריץ בלופ את מה שאני צריך השאלה היא שאני צריך פקודה שתעצור אותו מלהריץ את היישום אם הוא מזהה שזה פתוח כי במצב הנוכחי הוא מריץ כל הזמן בלי לעצור ופותח את אותו תהליך עוד פעם ועוד פעם ורק שהוא יבצע בדיקה כל כמה זמן שאני רוצה שהתהליך פתוח ואם לא אז שיפתח אותו
זה הקוד הנוכחי@ECHO OFF :loop cd C:\BABA start /MIN Hidew7Sb.exe timeout /T 300 cls goto loop -
-
אני לא רואה איפה אתה בודק אם זה פעיל או לא
כתבתי לך כבר@משחזר-מידע אמר בעזרה בכתיבת סקריפט:
tasklist יכול לענות לך אם פרוסס X פעיל
(תתחיל לעבוד על זה)
-
-
@משחזר-מידע נכון את זה אני לא יודע איך לבדוק לכן שאלתי והשאלה היא איך אני ייתן לו פקודה לעצור את הלופ אחרי שאני יודע שהתהליך פעיל
-
@aknvtchtk לדעתי אתה בכלל צריך לעשות את זה מתוך המתזמן משימות.
יש לך עניין בבדיקה דווקא של 30 שניות?
או אם התוכנה תיפתח איך שתיסגר זה גם טוב? -
זה אמור לעבוד
@ECHO OFF :loop cd C:\BABA tasklist|findstr Hidew7Sb.exe > nul if %errorlevel%==0 goto sleep start /MIN Hidew7Sb.exe :sleep timeout /T 300 cls goto loop -
@aknvtchtk
אתה צריך 300 שניות אחרי שהתוכנה נסגרה?
או שיבדוק פעם ב300 שניות?
אם זה בדיקה פעם ב300 שניות, אז יכול להיות שהתוכנה נסגרה בשנייה ה298 של הטיימר, ואז תיפתח שוב אחרי 2 שניות -
@aknvtchtk אמר בעזרה בכתיבת סקריפט:
אני צריך 15 שניות אחרי שהתוכנה נסגרה שתחזור לפעול
אז זה כבר סיפור שונה...
@ECHO OFF :loop cd C:\BABA start /wait /min Hidew7Sb.exe timeout /T 300 cls goto loop -
@yossiz קודם כל תודה רבה על הקוד אבל הוא בכלל לא מפעיל את היישום שבחרתי לו
@ECHO OFF :loop cd C:\Program Files (x86)\Wise\Wise Disk Cleaner tasklist|findstr WiseDiskCleaner.exe > nul if %errorlevel%==0 goto sleep start /WiseDiskCleaner.exe :sleep timeout /T 15 cls goto loop -
@aknvtchtk
אני מצרף קוד C# שעושה את זה.Process process = new Process(); // Configure the process using the StartInfo properties. process.StartInfo.FileName = @"c:\baba\Hidew7Sb.exe"; process.StartInfo.Arguments = ""; process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized; while (true) { try { process.Start(); } catch (Exception) { throw; } process.WaitForExit();// Waits here for the process to exit. System.Threading.Thread.Sleep(15*1000); } בהנחה שהנתיב שהבאת הוא הנכון, אז גם קובץ מוכן שעובד
מה שהקוד הזה עושה:
- פותח את התוכנה
- ממתין עד שתיסגר
- כשהתוכנה נסגרת הוא ממתין 15 שניות וחוזר לשלב 1
-
13/64