dポイントプレゼントキャンペーン実施中!

Javaを利用して常駐するタスクスケジューラのようなプログラムを作成しています。
大体は完成したのですが、どうしてもわからない部分があります。

「起動したらX分毎にバッチファイル起動!」

はできるのですが、

「起動したら60分毎にバッチファイル起動!」
※ただしバッチファイル起動時間は 01:05、02:05、03:05 など指定間隔ごとにする

プラス、

「起動したら毎日23:55にバッチファイル起動!」

が思いつきません。

====================================

import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.TrayIcon.MessageType;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.util.Timer;
import java.util.TimerTask;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Task {

/**
* メール振分タスク
*/


public static void main(String[] args) throws Exception {

try {

// 多重起動チェック
@SuppressWarnings("resource")
FileChannel fc = new FileOutputStream(new File("LockFile")).getChannel();
FileLock lock = fc.tryLock();
if (lock == null) {

//既に起動されているので終了する
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame, "すでに起動されています!");
return;

}

//起動メッセージ表示
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame, "タスクを起動しました!");
new Task();

} catch (Exception e) {

}

}

/** コンストラクタ */
public Task() throws IOException, AWTException {

// アイコンイメージの読み込み
Image image = ImageIO.read(Thread.currentThread().getContextClassLoader().getResourceAsStream("16_16.png"));

// トレイアイコン生成
final TrayIcon icon = new TrayIcon(image);

// イベント登録
icon.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
icon.displayMessage("メール配信","メール配信システム アイコンがダブルクリックされました",MessageType.WARNING);
}

});

// ポップアップメニュー
PopupMenu menu = new PopupMenu();

// 終了メニュー
MenuItem exitItem = new MenuItem("終了");
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});

// メニューにメニューアイテムを追加
menu.add(exitItem);
icon.setPopupMenu(menu);

// タスクトレイに格納
SystemTray.getSystemTray().add(icon);

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// 01_メール受信起動.bat
TimerTask task0 = new TimerTask() {
@Override
public void run() {

icon.displayMessage("タイマー2分","メールチェックします\n" , MessageType.INFO);

// メールチェック起動
String cmd = "cmd.exe /c start c:/dummy.bat";
try {
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}

}
};

Timer timer = new Timer();
timer.scheduleAtFixedRate(task0, 0, 2 * 60 * 1000); // 2分ごと


}

}

A 回答 (1件)

Timerクラスを使う。



参考URL:http://www.atmarkit.co.jp/fjava/javatips/078java …
    • good
    • 0
この回答へのお礼

調べたら、最初の実行秒数が設定できることに気が付きました。
すいません、ありがとうございました。

お礼日時:2013/07/02 10:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!