У меня есть несколько сценариев резервного копирования командных файлов, которые я запускал в xp, и я перешел на сервер Windoes Server 2008 R2, где он не запускается впереди при планировании с помощью диспетчера задач. Я изо всех сил пытался заставить его работать в запланированное время с помощью диспетчера задач, и он работает, но не показывает процесс (работает в фоновом режиме). Еще я знаю возможность отображать все запущенные задачи. Я искал в гугле и пока не нашел. Кто-нибудь знает, как заставить диспетчер задач выполнять .bat-файл на рабочем столе (открытие командной строки) в Windows Server 2008 R2 ?. Я запланировал его запуск от имени того же пользователя рабочего стола !.
Спасибо!
В ответ на ваш комментарий выше вы можете сделать 3 вещи, чтобы убедиться, что ваш скрипт запущен правильно.
echo Script finished %date% %time% >> c:\batch\backupScript.log
.Задачи могут запускаться в интерактивном режиме только при использовании Запускать только когда пользователь вошел в систему вариант. Вот выдержка из файла справки Планировщика заданий:
Вы можете указать, что задача должна выполняться, даже если учетная запись, под которой запланировано выполнение задачи, не входит в систему при запуске задачи. Для этого выберите переключатель с надписью Запускать независимо от того, вошел ли пользователь в систему или нет. Если этот переключатель установлен, задачи не будут выполняться в интерактивном режиме. Чтобы задача выполнялась в интерактивном режиме, выберите Запускать только когда пользователь вошел в систему переключатель.
Я немного поэкспериментировал с psexec -i
но не повезло, извините.
Вы можете найти список запущенных запланированных задач с помощью schtasks.exe
, например:
schtasks /query | find "Running"
Если вы хотите немного пофантазировать, вы также можете вытащить командную строку для каждой запущенной задачи. Вот пример командного файла:
@echo off
for /f "delims=," %%i in ('schtasks /query /fo csv ^| find "Running"') do (
for /f "delims=, tokens=9" %%j in ('schtasks /query /fo csv /v /tn %%i ^| find /v "Next Run Time"') do (
echo %%~i %%j
)
)