Copy小程序

#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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值