6

У меня есть пакетный файл, который создает запланированное задание, используя следующие 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 , что снова вызывает открытие нового окна.

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

4 ответа4

3

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

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

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

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

Я считаю, что вы видите коробку, потому что учетная запись, которую вы настроили для ее запуска, является вашей собственной. Попробуйте любой из них:

1. Запустите задачу от имени пользователя NT Authority\System.

2. Создайте новую учетную запись и настройте задачу на выполнение с ее учетными данными.

1

Наконец, я использовал этот код для решения проблемы:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "...\my_task.bat" & Chr(34), 0
Set WshShell = Nothing

сохранил его в run_my_task.vbs и запланированном run_my_task.vbs со schtasks как указано выше.

1

Возможно, с помощью команды AT и не включайте /interactive .

Пример:
AT \\my_computer_name 10:00AM /EVERY:M,T,W,Th,F,S,Su "...\my_path\my_task.bat"

Если вам нужны определенные учетные данные для запуска my_task.bat, вам, вероятно, придется ввести RUNAS в команду, потому что я считаю, что команда будет выполняться в контексте безопасности службы Schedule (Task Scheduler), которая является учетной записью "Local System" , Добавление команды RUNAS и переключателей перед вашим BAT-файлом должно исправить это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .