Copy小程序
2015-12-18 13:36
471 查看
#include <iostream> #include <string> #include <cstdio> #include <windows.h> #include <fstream> using namespace std; class zhuan_huan{ //转换类 将不同类型的值相互转换 public: string shu_str(int shu_zi) //int类型转换成string类型 { char t[256]; sprintf(t, "%d", shu_zi); return t; } char* str_cha(string zi_fu) //string类型转换成char类型 { char *dst = new char[255]; int i; for(i=0;i<=zi_fu.length();i++) { dst[i]=zi_fu[i]; } dst[i] = '\0'; return dst; } LPCSTR str_lpc(string b) //string类型转换成 LPCSTR类型 { LPCSTR destination = b.c_str(); return destination; } }; class time{ //时间类 将系统时间存储到类中 并以不同的格式以及形式输出 public: int nian; int yue; int ri; int shi; int fen; int miao; int hao; int zhou; //周 int 1~7 void xie_time() //将时间写入类的变量中 { SYSTEMTIME sys; GetLocalTime( &sys ); //sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek nian = sys.wYear; yue =sys.wMonth; ri=sys.wDay; shi=sys.wHour; fen=sys.wMinute; miao= sys.wSecond; hao =sys.wMilliseconds; zhou=sys.wDayOfWeek; } int inyr() //yyyymmdd 返回int格式的年月日 { int time=(nian*10000+yue*100+ri); return time; } string snyr() //yyyymmdd 返回string格式的年月日 { int time=(nian*10000+yue*100+ri); zhuan_huan a; string stime=a.shu_str(time); return stime; } string sfm() //返回 string格式的 XX时XX分XX秒 { zhuan_huan a; string sfm=(a.shu_str(shi)+"时"+a.shu_str(fen)+"分"+a.shu_str(miao)+"秒"); //24小时制的 时 分 秒 return sfm; } }; class kao_bei{ //拷贝命令类 将拷贝命令合成位完整的执行命令 保存为string字符的形式 以变量he来存储 string kao_min_lin; //命令类型 string yuan; //源文件路径 string mu_biao; //目标文件路径 string ri_zhi; //日志文件路径 string shi_jian; //时间值 YYYYMMDD string ge_shi; //.log 将执行结果保存到log 文件中 public: string he; void fu_zhi(string y,string time) //需要输入的变量 原路径,目标路径,时间(YYYYMMDD) { kao_min_lin="xcopy /d /y "; //需要执行的命令可以更换 yuan=y; // mu_biao=m; ri_zhi=" >>D:\\zzx\\log\\"; //log日志文件保存的路径 一般不变在D:\zzx\log\中 shi_jian=time; ge_shi=".log"; //日志文件格式 he=kao_min_lin+yuan+ri_zhi+shi_jian+ge_shi; //合成所有命令 } }; class pei_zhi{ public: int duqucanshu() { LPTSTR lpPath = new char[MAX_PATH]; LPTSTR LiMingSex = new char[6]; int num; strcpy(lpPath, "D:\\zzx\\peizhi.ini"); GetPrivateProfileString("lujinshu", "num", "", LiMingSex, 8, lpPath); num=GetPrivateProfileInt("lujinshu", "num", 0, lpPath); delete [] lpPath; return num; } string duqulujin(const char *strSectionName,const char *strKeyName,const char *strFileName) //读取路径 以string字符形式返回 ("主节点名字","子节点名称","文件路径") 如果失败返回 “oxfalse” { string reValue; // reValue = *fileName; // return reValue; reValue = "oxfalse"; ifstream Readfile; Readfile.open(strFileName); if(!Readfile.is_open())//打不开文件 返回0 { Readfile.close(); return reValue; } string strSection="["; strSection+=strSectionName; strSection+="]"; string strKey=strKeyName; strKey+="="; while(!Readfile.eof()) { string line; getline(Readfile,line); //读取第一行数据 if(line.find(strSection) == 0) //找到section { getline(Readfile,line); while(line.find(strKey) != 0 && line.find("[") != 0 && !Readfile.eof()) { getline(Readfile,line); } if(line.find(strKey) == 0) { reValue = line.substr(line.find("=")+1); if(reValue.find("#") != string::npos) //如果查找到"#" 就去掉包括“#”号后面的字符串 { reValue = reValue.substr(0,reValue.find("#")); } int lv = reValue.find_last_not_of(' ');//查找最后一位不为空格字符的index reValue=reValue.substr(0,lv);//去掉字符串后面的空格 Readfile.close(); return reValue; } } } Readfile.close(); return reValue; } private: string *fileName; }; void chuangjian(string nyr) //创建年月日的log日志文件 { zhuan_huan aa; //创建转换类 string mulu="D:\\zzx\\log\\"+nyr+".log"; //合成文件路径以及文件名 ofstream fout(aa.str_cha(mulu)); //创建文件 fout.close(); //关闭文件 } void xierizhi(string nyr) //将时间写入日志中 { zhuan_huan aa; //创建转换类 string mulu="time /t >>D:\\zzx\\log\\"+nyr+".log "; //合成写入时间以及要写入的文件路径 system(aa.str_cha(mulu)); //转换成char变量执行,输出XX:XX时间 到当日log中 } int main() { int day=0,day_qian; //初始化两个时间变量 for(;;) //无限循环 { pei_zhi canshu; int num1=canshu.duqucanshu(); int num2=num1; string yuan[100]; //源路and目标路径 for(int i=0;num1>0;i++,num1--) { zhuan_huan lszh; string ls="lujin"+lszh.shu_str(i+1); yuan[i]=canshu.duqulujin("lujin",lszh.str_cha(ls),"D:\\zzx\\peizhi.ini"); } for(int j=180;j>0;j--) //循环180次 每次一秒 共3分钟 { cout<<"程序将于"<<j<<"后进行下一次拷贝,请勿关闭程序!"<<endl; //提示多少秒后执行操作 cout<<"程序如果不走秒数动,请重启程序!"<<endl; //如果秒数字不走动表示程序卡死 Sleep(1000); // 休眠1000毫秒 system("cls"); // 清屏 } time sfm; //创建时间类 sfm.xie_time(); //初始化时间 day_qian=day; day=sfm.ri; if(day!=day_qian) //创建当日文件的log文件 未完成 { chuangjian(sfm.snyr()); } xierizhi(sfm.snyr()); //输出执行命令时间 for(int i=0;num2>0;i++,num2--) //i=7时结束循环则执行7次操作 { zhuan_huan zhzz; // 新建转换类 string shijian=sfm.sfm(); //小时-分钟-秒 string sj=sfm.snyr(); //string格式的 YYYYMMDD 日期 kao_bei kb; // 新建一个拷贝类 kb.fu_zhi(yuan[i],sj); //将源目标和时间结合成一个string命令 system(zhzz.str_cha(kb.he)); //执行命令 } } return 0; }
相关文章推荐
- 仿微信添加触摸图片阴影效果
- ios/iphone手机请求微信用户头像错位BUG及解决方法
- 微信公众平台下载多媒体文件
- 微信企业号接口调用
- 仿照微信首页下拉拍照的demo
- [微信开发五]--图文消息回复
- 微信开发四----实例代码分析
- 微信开发三---SAE服务器
- 微信开发开发者模式----微信开发二(2)
- 订阅号的编辑模式----微信开发二(1)
- 微信公众号上传多媒体文件
- 微信公众平台认证步骤详解及服务号和订阅号区别---之微信开发一
- share SDK的qq,微信 新浪 的登陆
- android 仿qq微信退出进入数据不用重新加载
- 仿微信开发的IM源码
- 不能出现第三个中间变量,字符串的交换
- php微信开发 -- 两种运营模式及服务器配置
- 修改小程序
- 微信JSSDK开发
- 微信运动过气了吗?