//返回.exe的文件名 void FindExeFile(std::string path, std::string mode, std::set<std::string> &saveExeFile) { _finddata_t file; intptr_t HANDLE; std::string pattern{ "(.*).exe" }; std::regex reg(pattern); std::string Onepath = path + mode; HANDLE = _findfirst(Onepath.c_str(), &file); if (HANDLE == -1L) { LOG_WARN << "can not match the folder path"; return; } do { //判断是否有子目录 if (file.attrib & _A_SUBDIR) { //判断是否为"."当前目录,".."上一层目录 if ((strcmp(file.name, ".") != 0) && (strcmp(file.name, "..") != 0)) { std::string newPath = path + "\\" + file.name; FindExeFile(newPath, mode, saveExeFile); } } else { bool ret = std::regex_match(file.name, reg); //找到.exe文件 if (ret) { saveExeFile.insert(file.name); } } } while (_findnext(HANDLE, &file) == 0); _findclose(HANDLE); } //返回.exe所在的绝对路径 void FindExeFileWithPath(std::string path, std::string mode, std::set<std::string> &saveExeFile) { _finddata_t file; intptr_t HANDLE; std::string pattern{ "(.*).exe" }; std::regex reg(pattern); std::string Onepath = path + mode; HANDLE = _findfirst(Onepath.c_str(), &file); if (HANDLE == -1L) { return; } do { //判断是否有子目录 if (file.attrib & _A_SUBDIR) { //判断是否为"."当前目录,".."上一层目录 if ((strcmp(file.name, ".") != 0) && (strcmp(file.name, "..") != 0)) { std::string newPath = path + "\\" + file.name; FindExeFile(newPath, mode, saveExeFile); } } else { bool ret = std::regex_match(file.name, reg); //找到.exe文件 if (ret) { saveExeFile.insert(path + "\\" + file.name); } } } while (_findnext(HANDLE, &file) == 0); _findclose(HANDLE); } void main() { std::vector<std::string> exeFile; std::string path="C:\\Windows"; std::mode="*\\*"; FindExeFile(path, mode, exeFile); }
遍历文件夹
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:批处理常用符号详解
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章