Я хочу создать задачу в Планировщике оконных задач, используя мой код Java. OS, который я использую, - win7 64bit. После создания задачи я должен отредактировать запланированное время еженедельно или раз в две недели. Есть ли какой-либо API-планировщик окон для использования в Java-коде или команде для использования в командной строке?Как создать задачу планировщика в Планировщике планировщика окон с помощью Java?
ответ
Windows, имеют уже планировщик задач, которые вы можете вызывать из командной строки: SchTasks.exe
SchTasks/параметр [аргументы]
Описание: Позволяет администратору создавать, удалять, запросов, изменение, run и завершить запланированные задачи в локальной или удаленной системе.
Список параметров: /Создать Создает новую запланированную задачу.
/Удалить Удаляет запланированные задачи.
/Query Отображает все запланированные задачи.
/Изменить Изменение свойств запланированной задачи.
/Run Выполняет запланированную задачу по требованию.
/End Останавливает текущую запланированную задачу.
/ShowSid Показывает идентификатор безопасности, соответствующий запланированному номеру .
/? Отображает это справочное сообщение.
Попробуйте следующее http://yajsw.sourceforge.net/. Используя «YAJSW» (еще один Java Wrapper), вы можете зарегистрировать свою java-службу как службу Windows.
Запустить служебную программу командной строки schtasks.
Чтобы создать задачу.
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class TestWinScheduler {
public static void main(String args[]) throws IOException, InterruptedException {
// schtasks /create /tn "HowToTask" /tr c:\temp\test.cmd /sc once /st 00:00:00 /sd 2022/01/01 /ru username /rp password
List<String> commands = new ArrayList<String>();
commands.add("schtasks.exe");
commands.add("/CREATE");
commands.add("/TN");
commands.add("\"HowToTask\"");
commands.add("/TR");
commands.add("\"c:/temp/test.cmd\"");
commands.add("/SC");
commands.add("once");
commands.add("/ST");
commands.add("00:00:00");
commands.add("/SD");
commands.add("2022/10/10");
commands.add("/RU");
commands.add("username");
commands.add("/RP");
commands.add("password");
ProcessBuilder builder = new ProcessBuilder(commands);
Process p = builder.start();
p.waitFor();
System.out.println(p.exitValue()); // 0 : OK
// 1 : Error
}
}
Чтобы выполнить поставленную задачу:
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class TestWinScheduler {
public static void main(String args[]) throws IOException, InterruptedException {
// schtasks /run /tn "HowToTask"
List<String> commands = new ArrayList<String>();
commands.add("schtasks.exe");
commands.add("/RUN");
commands.add("/TN");
commands.add("\"HowtoTask\"");
ProcessBuilder builder = new ProcessBuilder(commands);
Process p = builder.start();
p.waitFor();
System.out.println(p.exitValue()); // 0 : OK
// 1 : Error
}
}
Вышеприведенный рабочий код для меня. Но когда я удаляю задачу планировщика, используя свой код, он говорит ** ОШИБКА: Доступ запрещен. ** и он удаляется, когда я делаю это вручную в Планировщике планировщика окон. Любое разрешение на это? – Harsh
Google всегда выбивают StackOverflow дверь, прежде чем шептались. :) – Harsh