【aardio实战】制作监视文件变更+自动备份程序-文件操作、批量处理论坛-aardio-阿甘软件

【aardio实战】制作监视文件变更+自动备份程序

关于为什么选 aardio 来开发:一是 aardio 写这类程序很简单、快捷,十来分钟就能完成类似的小需求,因为 aardio 范例丰富,今天我写的这个就是参考的 aardio 范例 ~/文件操作/监视文件/监视文件 fsys.dirWatcher;再就是 aardio 写出来的东西体积小(方便网络传输)、兼容性好(基本覆盖所有Windows系统)。

运行截图

图片[1]-【aardio实战】制作监视文件变更+自动备份程序-文件操作、批量处理论坛-aardio-阿甘软件

源码

点击下载源码(内有打包好的exe)

import fonts.fontAwesome;
import win.dlg.message;
import console;
import process;
import fsys;
import fsys.dirWatcher;
import fsys.dlg;
import win.ui;
/*DSG{{*/
var winform = win.form(text="监视文件+自动备份";right=984;bottom=589;bgcolor=16777215)
winform.add(
btnWatch={cls="plus";text="点击开始监视——自动备份监视目录下发生变化的文件";left=10;top=149;right=453;bottom=180;align="left";color=15570468;dl=1;dr=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome')};iconText='\uF204';notify=1;tabstop=1;textPadding={left=30};z=1};
btn_select_save_dir={cls="plus";text="选择备份存储位置";left=794;top=84;right=975;bottom=114;align="left";bgcolor=-1206748;color=16777215;dr=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=20}};iconText='\uF045';notify=1;textPadding={left=39};z=4};
btn_select_watch_dir={cls="plus";text="选择监视目录";left=827;top=29;right=975;bottom=59;align="left";bgcolor=-1206748;color=16777215;dr=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=20}};iconText='\uF07C';notify=1;textPadding={left=39};z=6};
editChange={cls="edit";left=10;top=196;right=975;bottom=580;bgcolor=3682597;color=16439726;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;readonly=1;z=2};
edit_save_dir={cls="plus";left=10;top=88;right=795;bottom=114;align="left";border={bottom=1;color=-6908266};dl=1;dr=1;dt=1;editable=1;font=LOGFONT(h=-16);textPadding={left=10;right=10};z=3};
edit_watch_dir={cls="plus";left=10;top=33;right=828;bottom=59;align="left";border={bottom=1;color=-6908266};dl=1;dr=1;dt=1;editable=1;font=LOGFONT(h=-16);textPadding={left=10;right=10};z=5}
)
/*}}*/

winform.btn_select_watch_dir.skin({
	background={
		active=0xFF1867A3;
		default=0xFF2496ED
	};
	color={
		default=0xFFFFFFFF;
		disabled=0xFF6D6D6D
	}
})

winform.btn_select_save_dir.skin({
	background={
		active=0xFF1867A3;
		default=0xFF2496ED
	};
	color={
		default=0xFFFFFFFF;
		disabled=0xFF6D6D6D
	}
})

winform.btnWatch.skin({
	color={
		default=0xFF2496ED;
		disabled=0xEE666666
	};
})

WATCH_DIR = null;
SAVE_DIR = null;

//选择监视目录
winform.btn_select_watch_dir.oncommand = function(id,event){
	WATCH_DIR = fsys.dlg.opendir(,winform.hwnd,"请选择监视目录");
	winform.edit_watch_dir.text = WATCH_DIR != null ? WATCH_DIR : winform.edit_watch_dir.text;
}

//选择存储目录
winform.btn_select_save_dir.oncommand = function(id,event){
	SAVE_DIR = fsys.dlg.opendir(,winform.hwnd,"请选择存储目录");
	winform.edit_save_dir.text = SAVE_DIR != null ? SAVE_DIR : winform.edit_save_dir.text;
}

//文件监控
watchStart = function(owner){
	WATCH_DIR = winform.edit_watch_dir.text;
	SAVE_DIR = winform.edit_save_dir.text;
	if(0 == #WATCH_DIR or 0 == #SAVE_DIR){
		winform.msgInfo("监视目录/存储目录不能为空!");
		return;
	}
	
	if(false == owner.checked){
		owner.text = "点击开始监视——自动备份监视目录下发生变化的文件"
		if(!winform.thrdWatcher) return; 
    	winform.thrdWatcher.close(); //停止监视文件
		return;
	}
	else{
		owner.text = "已开启监视"
		owner.skin(checked={iconText='\uF205'})
	}
	
	if( WATCH_DIR ) {
		//创建监视线程 
		winform.thrdWatcher = fsys.dirWatcher.thread(
			function(filename,action,actionText){
				var fullname = WATCH_DIR+'\\'+filename;
				select(action) {
					case 1 {//添加
					}
					case 2 {//移除
					}
					case 3 {//修改
						fsys.copy(fullname, SAVE_DIR);
						winform.editChange.appendText(actionText," -> ",fullname,'\r\n')
					}
					case 4 {//重命名--原名
					}
					case 5 {//重命名--新名
					}
					else {}
				}
			}, WATCH_DIR); 
	}	
}

winform.btnWatch.oncommand = function(id,event){
	try{
		watchStart(owner);
	}
	catch(e){
		winform.msgErr(e);	
	}
}

winform.show();
win.loopMessage();
return winform;

 

请登录后发表评论

    没有回复内容