#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;
}
Copy小程序
最新推荐文章于 2023-12-07 16:14:50 发布