备份文件夹

用到的API和数据结构:

WINDOWS数据结构:

WIN32_FIND_DATA

WINDOWS API:

FindFirstFile

FindNextFile

CompareFileTime

CopyFIle

DeleteFile

View Code
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
#define MAXN 10000
typedef struct _SRCFILE
{WIN32_FIND_DATA fd;//我WIN32_FIND_DATA关于文件的全部属性信息的数据结构bool IsNew;
}SRCFILE;SRCFILE srcFiles[MAXN], desFiles[MAXN];WIN32_FIND_DATA fd;
int iSrcFiles;
int iDesFiles;void get_source(string str)
{bool bRet = true;iSrcFiles = 0;HANDLE hFile = FindFirstFile(str.c_str(),&fd);while( hFile != INVALID_HANDLE_VALUE && bRet ){if( fd.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE ){srcFiles[iSrcFiles].fd = fd;srcFiles[iSrcFiles].IsNew = false;iSrcFiles++;}bRet = FindNextFile(hFile, &fd);}}void get_destion(string str)
{bool bRet = true;iDesFiles = 0;HANDLE hFile = FindFirstFile(str.c_str(),&fd);while( hFile != INVALID_HANDLE_VALUE && bRet ){if( fd.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE ){desFiles[iDesFiles].fd = fd;desFiles[iDesFiles].IsNew = false;iDesFiles++;}bRet = FindNextFile(hFile, &fd);}
}void solve(string sp, string st)
{int i ,j;//  printf("iSrcFiles = %d iDesFiles = %d\n", iSrcFiles, iDesFiles);for(i = 0; i < iSrcFiles; i++){   int f = 0;for(j = 0; j < iDesFiles; j++){if( strcmp(srcFiles[i].fd.cFileName,desFiles[j].fd.cFileName) == 0 && CompareFileTime(&srcFiles[i].fd.ftLastWriteTime, &desFiles[j].fd.ftLastWriteTime) == 0 ){f = 1;break;}}if( !f )srcFiles[i].IsNew = true;elsedesFiles[i].IsNew = true;}for( i = 0; i < iSrcFiles; i++){if( srcFiles[i].IsNew ){string spath = sp + srcFiles[i].fd.cFileName;string dpath = st + srcFiles[i].fd.cFileName;printf("备份的是:%s\n", spath.c_str());CopyFile(spath.c_str(),dpath.c_str(),false);//备份也要指定路径+文件名
       }}for(i = 0; i < iDesFiles; i++){if( desFiles[i].IsNew == false ){string dpath = st + desFiles[i].fd.cFileName; //cFileName只包含文件名,删除要指定路径printf("删除的是:%s\n",dpath.c_str());DeleteFile(dpath.c_str());}}}int main( )
{string str("E:\\桂林\\*.*"); //查询这个文件夹下的所有文件string st("D:\\桂林\\*.*");    get_source(str);get_destion(st);string sq("E:\\桂林\\");string sp("D:\\桂林\\");solve(sq,sp);return 0;}

转载于:https://www.cnblogs.com/tangcong/archive/2012/10/16/2725905.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试整理(1):原生ajax

接到电话面试&#xff0c;有一些送分题答的不好&#xff0c;在这里整理一下 问题&#xff1a;原生ajax的工作流程是怎么样的&#xff1f; 老用封装好的工具&#xff0c;原生的ajax其实并不熟悉&#xff0c;今天复习一下。主要参考http://www.w3school.com.cn/ajax/ 要发一个…

QT

Qt软件 Qt是一个跨平台的C图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 自从1996年早些时候&#xff0c;Qt进入商业领域&#xff0c;它已经成为全…

IOS获取资源路径

1. 获取已经添加到xcode工程中的某一资源文件 file.txt 的路径 NSString *filePath_ [[NSBundle mainBundle] pathForResource:"file" ofType:"txt"]; std::string filePath std::string([filePath_ UTF8String]); 2. 对当前xcode工程开通沙盒权限后&#…

我从ColdFusion迁移到Java开发

尽管我在大学和研究生的整个职业生涯中都研究和尝试了不同的开发技术和工具&#xff0c;但我的全职职业生涯始于Adobe ColdFusion的开发。 从学校毕业后&#xff0c;使用技术解决现实世界中的业务问题本身就是一个挑战。 由于其相当简单的性质&#xff0c;ColdFusion不会妨碍您…

Azure IoT Hub和Event Hub相关的技术系列-索引篇

Azure IoT Hub和Event Hub相关的技术系列&#xff0c;最近已经整理了不少了&#xff0c;统一做一个索引链接&#xff0c;置顶。 Azure IoT 技术研究系列1-入门篇 Azure IoT 技术研究系列2-设备注册到Azure IoT Hub Azure IoT 技术研究系列3-设备到云、云到设备通信 Azure IoT 技…

spiderUI窗口过小解决

复制以下代码&#xff0c;直接替换此css样式即可&#xff1a; C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\webui\static\debug.min.css body{margin:0;padding:0;height:100%;overflow:hidden}.warning{color:#f0ad4e}.error{…

js获得页面鼠标位置

1.客户区坐标位置&#xff1a;clientX&#xff0c;clientY 鼠标相对于在当前页面可视范围左上角的位置 2.页面坐标位置&#xff1a;pageX,pageY 鼠标相对于页面左上角的位置&#xff08;受滑动等影响&#xff0c;例如pageYclientY scrollTop&#xff09; 3.屏幕坐标位置&#x…

针对新手的Java EE7和Maven项目–第7部分

从前面的部分恢复 第1 部分 &#xff0c; 第2 部分 &#xff0c; 第3 部分 &#xff0c; 第4 部分 &#xff0c; 第5 部分 &#xff0c; 第6部分 在上一篇文章&#xff08;第6章&#xff09;中&#xff0c;我们发现了如何使用Arquillian和Wildfly 8.1进行单元测试JPA2域模型。…

【转】IP Socket知识

虽然不是每个人都要做网络工程师&#xff0c;但开发人员的日常工作中&#xff0c;没有哪个不曾接触IP&#xff0c; 我碰到过好多新手在IP上犯迷糊&#xff0c;总结一下。 IP地址的记法&#xff1a; IP地址由四个字节构成&#xff0c;为了方便阅读和书写&#xff0c;每个字节用0…

具有Akka反应流的反应队列

反应性流是最近宣布的一项计划&#xff0c;旨在在JVM上为具有内置背压的异步流处理创建标准。 该工作组由Typesafe&#xff0c;Red Hat&#xff0c;Oracle&#xff0c;Netflix等公司组成。 早期的实验性实现之一是基于Akka的 。 预览版0.3包括演员生产者和消费者&#xff0c;这…

灰盒测试—提高篇

灰盒测试是要运用一些开发知识的&#xff0c;大家都认为要去学习开发知识。网上很多论坛也有人说做测试之前&#xff0c;最好要有一、二年的开发经验就比较好。做为黑盒测试人员&#xff0c;如果会当然好&#xff0c;但是大部分黑盒测试人员是没有开发经验&#xff0c;这里我谈…

Django框架下报的版本问题

报错环境 python3.6.5&#xff0c;django2.2&#xff0c;PyMySQL0.9.3 …… django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3. 解决方法&#xff1a; Django连接MySQL时默认使用MySQLdb驱动&#xff0c;但MySQLdb不支持…

CSS选择器总结

选择器   优先级 实例ID选择器   100类选择器    10伪类选择器     10 :link :visited :focus :hover :actived :lang  UI元素状态伪类          E:enabled{}匹配所有用户界面&#xff08…

C# 实体转为json字符串

C# 实体转为json字符串 Catalog cata new Catalog(); cata.C_platformid 0; cata.C_isnav 0; cata.C_isvalid 1; string strJson JsonConvert.SerializeObject(cata); 转载于:https://www.cnblogs.com/woniucode/p/10684214.html

Gradle入门:简介

Gradle是一种构建工具&#xff0c;可以使用基于Groovy编程语言的内部DSL替换基于XML的构建脚本。 最近它吸引了很多关注&#xff0c;这就是为什么我决定仔细研究一下。 这篇博客文章是我的Gradle教程的第一部分&#xff0c;它有两个目标&#xff1a; 帮助我们安装Gradle 描…

JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结

超时调用需要使用window.setTimeout(code,millisec)方法 它接受两个参数&#xff1a;要执行的代码和以毫秒表示的时间&#xff08;即在执行代码前需要等待多少毫秒&#xff09;。其中第一个参数可以是一个包含JS代码的字符串&#xff08;就和在eval()函数中使用的字符串一样&a…

损失函数_分类

通常机器学习每一个算法中都会有一个目标函数&#xff0c;算法的求解过程是通过对这个目标函数优化的过程。 在分类或者回归问题中&#xff0c;通常使用损失函数&#xff08;代价函数&#xff09;作为其目标函数。 损失函数用来评价模型的预测值和真实值不一样的程度&#xff0…

首页回顾功能

公司要弄一个首页回顾的功能&#xff0c;可以查看以往某个时间的首页。程序每天自动在上午和下午分别抓取一个页面&#xff0c;生成地址为http://xxx.com/review/channel20090715am.html 的形式。 这个功能用到了jQuery UI 的 datepicker日历插件&#xff0c;但是主要的还是通过…

多表关联更新字段

update jdjc_cy gset g.ypmc(select w.cymc from jdjc_spjdcy w where w.cydzjg.zj) where g.cydh020-JLSP14001转载于:https://www.cnblogs.com/zhuyeshen/p/10685220.html

使对易失性字段的操作原子化

总览 易失字段的预期行为是&#xff0c;它们在多线程应用程序中的行为应与在单线程应用程序中的行为相同。 禁止它们表现相同的方式&#xff0c;但不能保证它们表现相同的方式。 Java 5.0中的解决方案是使用AtomicXxxx类&#xff0c;但是这些类在内存&#xff08;它们添加标头…