美文网首页
C++ 指定目录的文件复制到某个目录

C++ 指定目录的文件复制到某个目录

作者: c之气三段 | 来源:发表于2021-10-06 17:56 被阅读0次

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <list>
#include<io.h>
#include<iostream>
using namespace std;
void getAllFiles(string path, list<string>& files);
void copyAllFiles(list<string>& files, string dirNewPath);
string getWorkPath();

int main(int argc, char* argv[])
{
    string exePath = getWorkPath();
    list<string> files;
    string oldPath = exePath;
    getAllFiles(oldPath.append("\\test"),files);
    copyAllFiles(files, exePath);
    return 0;
}

void getAllFiles(string path, list<string>& files)
{
    //文件句柄  
    //long hFile = 0;  //win7
    intptr_t hFile = 0;   //win10
    //文件信息  
    struct _finddata_t fileinfo;
    string p;
    if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)
    // "\\*"是指读取文件夹下的所有类型的文件,若想读取特定类型的文件,以png为例,则用“\\*.png”
    {
        do
        {
            //如果是目录,迭代之  
            //如果不是,加入列表  
            if ((fileinfo.attrib &  _A_SUBDIR))
            {
                string name = fileinfo.name;
                if (name.find(".",0)== string::npos)
                    getAllFiles(p.assign(path).append("\\").append(fileinfo.name), files);
            }
            else
            {
                files.push_back(path + "\\" + fileinfo.name);
            }
        } while (_findnext(hFile, &fileinfo) == 0);
        _findclose(hFile);
    }
}

void copyAllFiles(list<string>& files, string dirNewPath)
{
    for (auto obj: files)
    {
        string filePath = obj;
        string fileName = filePath.substr(filePath.find_last_of("\\")+1);
        string newfilePath = dirNewPath;
        newfilePath.append("\\").append(fileName);
        CopyFile(filePath.c_str(), newfilePath.c_str(), true);//false代表覆盖,true不覆盖
    }
}

string getWorkPath()
{
    char   szBuf[256];
    char   *p;
    GetModuleFileName(NULL, szBuf, sizeof(szBuf));//拿到全部路径 
    p = szBuf;
    string exePath = p;
    exePath = exePath.substr(0, exePath.find_last_of("\\"));
    return exePath;
}

相关文章

  • C++ 指定目录的文件复制到某个目录

  • Python 笔记

    1、获取当前脚本目录 2、读取脚本目录下的文件 3、文件复制到某个目录

  • 远程拷贝命令:scp用法

    从远处复制文件到本地目录 从远处复制到本地 上传本地文件到远程机器指定目录 上传本地目录到远程机器指定目录 本文只...

  • cornerstone 怎么设置 忽略指定的文件不提交不更新

    1、先将指定文件备份,删除目录中的文件,2、再将备份的文件复制到目录中3、然后到cornerstone找到该文件,...

  • 运维工程师必备命令之文件管理

    文件管理: cp命令: 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。 重点掌握: 【-u】只复制文件...

  • Linux基本命令12-26

    cp复制 将指定的文件或者目录复制到另一个文件或者目录中 语法: cp 复制:将需要的复制的文件从一个文件夹目录复...

  • cp命令

    cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文...

  • Linux 中 cp 命令(文件复制)

    cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文...

  • cp命令用法

    cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文...

  • 从查找文件并移动的shell命令说开去

    一个不能更常见的需求: 从一大堆下载目录(或别的目录)里, 查找指定的文件, 并移动/复制到指定的文件夹, 如果用...

网友评论

      本文标题:C++ 指定目录的文件复制到某个目录

      本文链接:https://www.haomeiwen.com/subject/dsyonltx.html