שאלה הפעל קובץ .bat במשימה מתוזמנת ללא חלון


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

הצלחתי להפוך את החלון להופיע ממוזער על ידי ביצוע העבודה מתוזמנת לרוץ

cmd /c start /min mybat.bat

אבל זה נותן לי חלון פקודה חדש בכל שעה. הופתעתי מזה, בהתחשב בכך cmd /c "מבצע את הפקודה שצוין על ידי מחרוזת ולאחר מכן מסתיים" - אני בטח הבנתי את המסמכים.

האם יש דרך להריץ סקריפט אצווה בלי זה צצים חלון cmd?


140
2018-05-17 09:00




מצאתי את התשובה הזאת עדיפה יותר stackoverflow.com/questions/6568736/... - Efekt


תשובות:


אתה יכול להריץ אותו בשקט באמצעות קובץ Windows Script במקום זאת. שיטת ההפעלה מאפשרת לך להפעיל סקריפט במצב בלתי נראה. ליצור .vbs קובץ כזה

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

ולתזמן אותו. הארגומנט השני בדוגמה זו קובע את סגנון החלון. 0 פירושו "להסתיר את החלון".

תחביר מלא של שיטת הפעלהYou

 object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

טיעונים:

  • אובייקט: אובייקט WshShell.
  • strCommand: ערך מחרוזת המציין את שורת הפקודה שברצונך להפעיל. עליך לכלול את כל הפרמטרים שברצונך להעביר לקובץ ההפעלה.
  • אפשרות אופציונלית. ערך מספר שלם המציין את המראה של חלון התוכנית. שים לב שלא כל התוכניות משתמשות במידע זה.
  • bWaitOnReturn: אופציונלי. ערך בוליאני המציין אם התסריט צריך להמתין עד לסיום התוכנית לפני ביצוע ההצהרה הבאה בתסריט. אם מוגדר נכון, ביצוע סקריפט נעצר עד סיום התוכנית, ו- Run מחזירה כל קוד שגיאה שהוחזרה על ידי התוכנית. אם מוגדר ל- false (ברירת המחדל), שיטת Run תחזור מיד לאחר הפעלת התוכנית, באופן אוטומטי החזרת 0 (לא תתפרש כקוד שגיאה).

142
2018-05-17 09:08



+1, פשוט כתב בדיוק את אותו הדבר - Sam Cogan
ראיתי את זה לפני שמחקת את זה. אני מניח שאנחנו שני הרובוטים. ;-) - splattne
שם משתמש, אני באמת חושב שסם מגיע לה הרבה יותר ממני. אבל תודה לך בכל מקרה! ואל תזכירי אותי ואת ג'ון סקייט באותו משפט. זה חילול הקודש! ;-) - splattne
לשאלה "האם יש דרך להריץ סקריפט אצווה מבלי לצוץ חלון cmd?", זה נותן תשובה ישירה מאוד: הפעל אותו באמצעות קובץ Script של Windows. - Mark Meuer
@ Lee אני מניח ציטוטים כפולים נחוצים אם הנתיב שלך מכיל רווחים. - splattne


האם אתה מפעיל את זה כמשימה מתוזמנת? אם כך להגדיר אותו לפעול כחשבון משתמש אחר אז זה לא יהיה גלוי למשתמש מחובר. אם הסקריפט אינו זקוק לגישה לרשת לפריטים הזקוקים ל- Windows auth (כמו שיתוף קבצים או מדפסות), באפשרותך להפעיל אותו כ- "nt Authority \ system" ולהשאיר את הסיסמה ריקה. ב- Windows 7, פשוט הגדר את המשתמש ל- SYSTEM ולחץ על אישור.

(אתה כנראה צריך להשתמש משתמש אמיתי אם כי אם אתה משתמש robocopy ...)

JR


56
2018-05-17 09:13



תודה - זה היה פחות טרחה בשבילי מאשר אפשרות .vbs. - mackenir
אני מגדיר את "הפעלה כ" משתמש SYSTEM (אשר מאוחר יותר השתנה O AUTHORITY \ NT) וזה עבד בשבילי. אני כבר לא רואה את חלון קופץ CMD כאשר המשימה המתוזמנת שלי פועל. תודה! - Ryan Stille
+1, זה אלגנטי. הקפד להזין "מערכת" כשם המשתמש, ואז Win7 עושה את השאר בשבילך. שים לב כי אתה מקבל גישה לרשת לאינטרנט, פשוט לא מניות רשת ודברים שצריכים Windows auth. - samsmith
משתמש המערכת היא פשוטה ואלגנטית, טיפ נהדר! +1! - Matteo Conta
ראה הטמעה של מודלים ניהוליים לפחות-פריבילג '. האם השימוש בחשבון System מהווה הפרה של מדיניות Least-Privilege? אם כך אז מנהלי צריך לדעת לא לעשות זאת ברוב המצבים. - user34660


כל שעליך לעשות הוא להגדיר את המשימה מתוזמנת כמו "הפעלה אם המשתמש מחובר או לא".


28
2017-10-04 20:06



מושלם! אתה יכול גם להשבית אחסון אישורים ואז זה בסופו של דבר להיות בטוח יותר מאשר שיש להפעיל את המערכת! - binki


אתה יכול גם לנסות CHP (יצירת תהליך מוסתר), עושה בדיוק מה שאתה חושב ...

CHP.EXE mybat.bat

פועל ללא חלון פקודה. מושלם! מיוצר על ידי אותם אנשים כמו CMDOW, אבל זה מתאים יותר.


17
2017-07-20 21:54



עובד באופן מושלם כאשר אתה צריך להפעיל את המשימה בהקשר של המשתמש מחובר ("טריגר: על להתחבר לפגישה המשתמש", "הפעל משימה כמו: משתמשים") - Sergei
זה לא כלי מובנה - Jonny Leeds


CMDOW הוא כלי awsome המאפשר לך לעשות הרבה, הרבה דברים חלונות משורת הפקודה.

אחד הדברים הפשוטים ביותר לעשות הוא להסתיר את החלון הנוכחי (בדרך כלל כשורה הראשונה בקובץ בת) עם:

cmdow @ /hid

או להתחיל תהליך מוסתר חדש עם

cmdow /run /hid mybat.bat 

9
2018-05-17 11:30



גם זה וגם הצעה Rocketmonkeys כרוך הורדת כלים חדשים, כלומר יותר תאימות על פני שולחנות עבודה עמים שונים. אפוי, באמצעות פקודות Windows הוא הרבה יותר טוב. - IanVaughan
פלוס cmdow מזוהה כמו "מסוכנים" על ידי כמה תוכניות אנטי וירוס (זה לא מסוכן, אבל הזיהוי עצמו יכול לגרום לבעיות מסוימות אם הקובץ cmdow הוא בהסגר ...). - Otiel
יש עדיין קונסולת קופץ, פשוט פלאש מהיר מאוד. - Bamboo


נסה להפעיל את הסקריפט באמצעות

start /b <command>

5
2018-05-17 14:54



זה לא עובד, המשימה מתוזמנת-> מצב קובע "לא יכול להתחיל", thats עם: התחל / b C: \ file.bat: ו: start / b "C: \ file.bat": אבל: C: file.bat: עובד בסדר גמור. - IanVaughan
כי start היא לא תוכנית, היא פקודה. עליך לציין cmd כמו תוכנית לרוץ ו /c start /b <file> כמו הטיעון. עם זאת, זה עדיין לא הולך לעבוד כי זה עדיין ליצור חלון קונסולת cmd ומבזיק חלון שחור על המסך. - Synetech
יכול גם לאשר עם @ Synetech כי זה לא ליצור חלון חדש, אבל אתה עדיין צריך חלון קונסולת פתוח כדי להתחיל את זה. זוהי אכן פקודה שימושית, אך לא ניתן להשתמש בה כמבוקש עם משימות מתוזמנות. - JonathanDavidArndt


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

חשוב: עליך לציין את הנתיב לקיצור הדרך באופן ידני על ידי הקלדתו בשדה 'הפעל טקסט', עם הסיומת 'lnk'; אם אתה רק מנסה לדפדף אליו, זה יהיה עזרה להפנות מחדש את כל מה קיצור נקודות.


5
2017-08-11 16:49



זה לא עובד על Windows 10 x64, זה נותן קופץ "איך אתה רוצה לפתוח את הקובץ הזה?" - Jan


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

אני גם רוצה לומר שאני לא מסכים עם @ splatne של תגובה (אבל לא את התשובה האמיתית) - כי ההחלטה בחוט השני התייחס מגיע האשראי. תשובה זו כרוכה בהפעלת התסריט כמשתמש אחר (SYSTEM), שהוא כמעט שווה ערך למתן גישה לשורש הסקריפטים. זה גם ייכשל עבור עבודות כגון ROBOCOPY (כפי שמפנה ג'ון רני), המחייבים גישה לרשת.

אף פעם לא ניסיתי CMDOW לפני, אבל אני רוצה להציע עוד פתרון דומה, אשר [למרות שאינו מותקן במקור על Windows] הוא עדיין נייד ביותר על רוב הגרסאות, והוא מגיע הן 32 ו 64 סיביות גירסאות, וכי NirCmd.

NirCmd הוא כלי רב עוצמה שיש לו מספר עצום של אפשרויות, שימושי ביותר אשר, אני אישית למצוא את היכולת שלה להשיק חלונות הפקודה מוסתר פשוט על ידי ביצוע הפעולות הבאות:

c:\path\to\nircmd.exe exec hide "c:\path\to\mybat.bat"

מ ה exec סעיף הפניה פקודה NirCmdYou

exec [show/hide/min/max] [application + command-line]

מפעיל יישום, ובאופן אופציונלי לציין אחד או יותר פרמטרים של שורת הפקודה עבור היישום שבוצע. המופע/להתחבא/ min / max] פרמטר מציין אם היישום פועל יהיה גלוי או לא. אם מצוין 'hide', יישום ההפעלה לא יהיה גלוי למשתמש. אם 'מקסימום' צוין, חלון היישום פועל יהיה מוגדל. אם 'min' מצוין, חלון היישום פועל ימוזער.

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

עריכה 2: מסיבה כלשהי, זה לא יעבוד כמו מערכת (כנראה את הדבר גישה לרשת בהתייחסו קודם לכן) - שמתי לב רק לאחר ריצה בפועל ROBOCOPY ללא הדגל / L, שהוא בעצם רק סימולציה ו [כנראה] לא ממש להתחבר למערכת מרחוק, אבל כאשר אני מפעיל את הקובץ אצווה עם הרשאות הגבוהות ביותר לבדוק את תיבת מוסתר, ואני עדיין יכול להריץ אותו מחובר המשתמש ברקע ללא חלון פקודה מראה, עבור מה זה שווה לכל אחד.


1
2018-05-01 03:38





פתרון נוסף שהשתמשתי בו הוא התחלה מוסתרת


0
2017-07-01 07:38