Как выполнить запланированное задание с помощью «schtasks», не открывая новое окно командной строки? - PullRequest
4 голосов
/ 02 октября 2010

У меня есть пакетный файл, который создает запланированное задание, используя schtasks, например:

schtasks /create /tn my_task_name 
                 /tr "...\my_path\my_task.bat"
                 /sc daily
                 /st 10:00:00 
                 /s \\my_computer_name 
                 /u my_username    
                 /p my_password

Он работает нормально, за исключением того факта, что при выполнении my_task.bat открывается новое окно командной строки(и закрывается после выполнения).

Я бы хотел не открывать это новое окно (т.е. запускать задачу в тихом режиме в фоновом режиме).

Я подумал использовать

start /b ...\my_path\my_task.bat

но я не знаю как, потому что, поскольку мне нужно вызвать start из командного файла, мне нужно предшествовать ему cmd /c, что снова вызывает открытие нового окна.

Как я мог решить эту проблему?

Ответы [ 2 ]

4 голосов
/ 02 октября 2010

Вы можете использовать расширения сценариев оболочки Windows для запуска пакетного файла в невидимом режиме.

  • Создайте простой текстовый файл и назовите его <scriptname>.vbs

  • Вставьте следующий код в файл .vbs

    Set WshShell = CreateObject("WScript.Shell") 
    WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0
    Set WshShell = Nothing
    
  • Измените имя и путь к вашему пакетному файлу в соответствии с вашими потребностями

  • Сохраните файл .vbs и запланируйте то же самое в schtasks
3 голосов
/ 08 февраля 2011

Вы можете сделать это, указав параметр / RU для учетных записей Эта опция

указывает учетную запись пользователя (user контекст), в котором выполняется задача. Для системной учетной записи, допустимые значения являются "", "NT AUTHORITY \ SYSTEM" или "SYSTEM".

И, таким образом, попробуйте это

schtasks /create /tn my_task_name 
                  ....
                 /st 10:00:00 
                 /ru "SYSTEM"
                 ....
...