פקודה בcmd
-
בזכות התגובה של @גמליאל
הצלחתי ליצור את הקוד CMD הזה@ECHO OFF IF %time% GEQ 00:00:00.00 IF %time% LEQ 08:30:00.00 (GOTO OPEN) IF %time% GEQ 09:15:00.00 IF %time% LEQ 09:30:00.00 (GOTO OPEN) IF %time% GEQ 14:52:00.00 IF %time% LEQ 15:10:00.00 (GOTO OPEN) IF %time% GEQ 16:00:00.00 IF %time% LEQ 16:30:00.00 (GOTO OPEN) IF %time% GEQ 17:30:00.00 IF %time% LEQ 23:59:00.00 (GOTO OPEN) :CLOSE net user test1 /active:no rundll32.exe user32.dll,LockWorkStation GOTO END :OPEN net user test1 /active:yes GOTO END END:
זה עובד מצוין בהפלה רגילה (דאבל קליק)
הבעיה מתחילה כשאני מתזמן לו משימה הוא מבצע רק את החלק של האקטוב של החשבון או אי האקטוב לפי השעה אבל לא מבצע את נעילת המחשב.
אשמח לעזרה -
@ECHO OFF IF %time% GEQ 00:00:00.00 IF %time% LEQ 08:30:00.00 (GOTO OPEN) IF %time% GEQ 09:15:00.00 IF %time% LEQ 09:30:00.00 (GOTO OPEN) IF %time% GEQ 14:52:00.00 IF %time% LEQ 15:10:00.00 (GOTO OPEN) IF %time% GEQ 16:00:00.00 IF %time% LEQ 16:30:00.00 (GOTO OPEN) IF %time% GEQ 17:30:00.00 IF %time% LEQ 23:59:00.00 (GOTO OPEN) :CLOSE net user test1 /active:no rundll32.exe user32.dll,LockWorkStation GOTO END :OPEN net user test1 /active:yes GOTO END END:
משהו בתנאי לא כתוב טוב כנראה
וזה עובד רק בתנאים שאחרי 1030
אשמח לעזרה איפה טעיתי או קוד תקין
הבנתי שיש איזשהו בעיה בשעות שמתחילות באפס -
@smk123
במקום%TIME%
תכתוב%TIME: =0%
ביאור הדבר:
כאשר השעה פחות מ-10:00 אז התו הראשון של המשתנה%TIME%
הוא רווח, ש-CMD מתעלם ממנה ומתחיל את ההשוואה מהתו הבא.
התחביר%TIME: =0%
אומר ל-CMD להחליף את הרווח בתו0
עוד פתרון שלכאורה יעבוד הוא להקיף את המחרוזות בגרשיים:
IF "%time%" GEQ "00:00:00.00" IF "%time%" LEQ "08:30:00.00" (GOTO OPEN)
זה בנוי על העובדה שהערך של הרווח (32) הוא פחות מערך מספר (48-57).
עוד פרונות:
https://stackoverflow.com/questions/54632207/time-comparison-in-windows-batch-script
https://stackoverflow.com/questions/21809027/batch-file-run-cmd1-if-time-10pm-4am-else-run-cmd2 -
@yossiz אמר בפקודה בcmd:
כאשר השעה פחות מ-10:00 אז התו הראשון של המשתנה %TIME% הוא רווח, ש-CMD מתעלם ממנה ומתחיל את ההשוואה מהתו הבא.
התחביר %TIME: =0% אומר ל-CMD להחליף את הרווח בתו 0@yossiz ב"ה זה עובד תודה רבה.
עריכה: זה לא עובד.
מנסה את האחרים.
זה משגע לי את כל הקובץ ברמה שהוא לא עושה כלום גם בשעות שקודם הוא עשה. -
@yossiz
עשיתיקוד כזה@ECHO OFF SET "BOMBA=%TIME: =0%" IF "%BOMBA%" GEQ "00:00:00.00" IF "%BOMBA%" LEQ "08:29:59.00" (GOTO OPEN) IF "%BOMBA%" GEQ "09:14:59.00" IF "%BOMBA%" LEQ "09:29:59.00" (GOTO OPEN) IF "%BOMBA%" GEQ "10:29:59.00" IF "%BOMBA%" LEQ "10:59:59.00" (GOTO OPEN) IF "%BOMBA%" GEQ "11:54:59.00" IF "%BOMBA%" LEQ "12:09:59.00" (GOTO OPEN) IF "%BOMBA%" GEQ "12:59:59.00" IF "%BOMBA%" LEQ "13:59:59.00" (GOTO OPEN) IF "%BOMBA%" GEQ "14:51:59.00" IF "%BOMBA%" LEQ "15:09:59.00" (GOTO OPEN) IF "%BOMBA%" GEQ "15:59:00.00" IF "%BOMBA%" LEQ "16:29:59.00" (GOTO OPEN) IF "%BOMBA%" GEQ "17:29:59.00" IF "%BOMBA%" LEQ "23:59:00.00" (GOTO OPEN) :CLOSE net user 123 /active:no GOTO END :OPEN net user 123 /active:yes GOTO END :END
יש לי גם כזה קוד שנועל את המחשב לפי השעות
התנאי כאן בסדר והוא פותח או נועל גם בשעות שמתחילות ב0
הבעיה כאן שמאז שהרצתי את זה זה עובד לי במתזמן משימות רק בטריגרים של כניסה או פתיחה מנעילה ביוזר ולא בטריגרים של שעות מוגדרות.
ואפי' משימת נעילה אחרת שעשיתי ללא כל התנאי הזה ג"כ לא עובדת.
אשמח לדעת איפה טעיתי
יישר כח