Windows的At命令完成定期Task计划,也就是Schedule Batch Job。
关于at的使用方法可以查找windows帮助。
class类内调用了本blog里已经介绍的CMDExecute类
本代码在WindowsXP内,用at命令定期运行自定义的一个批处理文件databasebackup.bat
批处理文件内容:mysqldump --user=root --password=XXXXX dbname >%1.sql
调用mysql数据库备份命令。 %1表示从命令行传入一个参数作为输出文件名。
程序最后调用的dos命令行是:
at 21:10:00 /every:26,27 d:\databasebackup.bat output
/*
* Created on 2005/07/26
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import CMDExecute;
import java.io.IOException;
/**
* set schedule bat by at
* @author tyrone
*
*/
public class AtSetting {
private int argslen=1;
private String[] Arguments=null;
private String CMD="";
private String Directory="";
private String Time = "";
private String Weekday = "";
private String Date = "";
private int getArgslen(){
return this.argslen;
}
private String getTime() {
return this.Time;
}
/**
* the format is HH:MM:SS
* @param time
*/
public void setTime(String time) {
this.Time = time;
argslen++;
}
private String getDate() {
return this.Date;
}
//if weekday!="" , date will be omited.
public void setDate(String date) {
if (this.getWeekday()==""){
this.Date = date;
argslen++;
}
}
private String getWeekday() {
return this.Weekday;
}
//weekday={M、T、W、Th、F、S、Su }.
public void setWeekday(String weekday) {
this.Weekday=weekday;
argslen++;
}
/**
* @return Returns the Directory.
*/
private String getDirectory() {
return Directory;
}
/**
* @param Directory The Directory to set.
*/
public void setDirectory(String property1) {
this.Directory = property1;
}
/**
* @return Returns the CMD.
*/
private String getCMD() {
return this.CMD;
}
/**
* @param CMD The CMD to set.
*/
public void setCMD(String property1) {
this.CMD = property1;
argslen++;
}
/**
* @return Returns the Argument.
*/
private String[] getArguments() {
return Arguments;
}
/**
* @param Argument The Argument to set.
*/
public void setArguments(String[] property1) {
this.Arguments = property1;
argslen=argslen+property1.length;
}
/**
* run at command
* @return
*/
public String run() {
if (this.getArgslen()==0){
return "";
}
//organize args
int args=0;
String[] cmd = new String[this.argslen];
cmd[args]="at";
if (this.getTime()==""){
return "no time set";
}else{
args++;
cmd[args]=this.getTime();
}
if (this.getWeekday()!=""){
args++;
cmd[args]="/every:"+this.getWeekday();
}else{
if (this.getDate()!=""){
args++;
cmd[args]="/every:"+this.getDate();
}
}
String dir=this.getDirectory();
if (dir!=""){
if (!dir.endsWith("\\")){
dir=dir +"\\";
}
if (this.getCMD()==""){
return "no command set";
}else{
args++;
cmd[args]=dir+this.getCMD();
}
}
if (this.getArguments()!=null){
for (int i=0;i<this.getArguments().length;i++){
cmd[args+1+i]=this.getArguments()[i];
}
}
String result = "";
CMDExecute exec = new CMDExecute();
try {
exec.run(cmd, null);
} catch (IOException ex) {
ex.printStackTrace();
}
return result;
}
public static void main(String[] args){
//mysql backup
AtSetting at=new AtSetting();
at.setCMD("databasebackup.bat");
at.setDirectory("d:\\");
at.setArguments(args);
at.setTime("21:10:00");
//at.setWeekday("T");
at.setDate("26,27");
String result=at.run();
System.out.println(result);
}
}
本文介绍了在Windows系统中,使用At命令完成定期Task计划,即Schedule Batch Job。通过编写Java代码调用At命令,定期运行自定义批处理文件databasebackup.bat,实现MySQL数据库的备份。批处理文件中调用了mysql数据库备份命令。
489

被折叠的 条评论
为什么被折叠?



