转载

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>
#pragma comment(lib, "User32.lib")void DisplayErrorBox(LPTSTR lpszFunction);int _tmain(int argc, TCHAR *argv[])
{WIN32_FIND_DATA ffd;LARGE_INTEGER filesize;TCHAR szDir[MAX_PATH];size_t length_of_arg;HANDLE hFind = INVALID_HANDLE_VALUE;DWORD dwError=0;// If the directory is not specified as a command-line argument,// print usage.if(argc != 2){_tprintf(TEXT("\nUsage: %s <directory name>\n"), argv[0]);return (-1);}// Check that the input path plus 3 is not longer than MAX_PATH.// Three characters are for the "\*" plus NULL appended below.
StringCchLength(argv[1], MAX_PATH, &length_of_arg);if (length_of_arg > (MAX_PATH - 3)){_tprintf(TEXT("\nDirectory path is too long.\n"));return (-1);}_tprintf(TEXT("\nTarget directory is %s\n\n"), argv[1]);// Prepare string for use with FindFile functions.  First, copy the// string to a buffer, then append '\*' to the directory name.
StringCchCopy(szDir, MAX_PATH, argv[1]);StringCchCat(szDir, MAX_PATH, TEXT("\\*"));// Find the first file in the directory.
hFind = FindFirstFile(szDir, &ffd);if (INVALID_HANDLE_VALUE == hFind) {DisplayErrorBox(TEXT("FindFirstFile"));return dwError;} // List all the files in the directory with some info about them.do{if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){_tprintf(TEXT("  %s   <DIR>\n"), ffd.cFileName);}else{filesize.LowPart = ffd.nFileSizeLow;filesize.HighPart = ffd.nFileSizeHigh;_tprintf(TEXT("  %s   %ld bytes\n"), ffd.cFileName, filesize.QuadPart);}}while (FindNextFile(hFind, &ffd) != 0);dwError = GetLastError();if (dwError != ERROR_NO_MORE_FILES) {DisplayErrorBox(TEXT("FindFirstFile"));}FindClose(hFind);return dwError;
}void DisplayErrorBox(LPTSTR lpszFunction)
{ // Retrieve the system error message for the last-error code
LPVOID lpMsgBuf;LPVOID lpDisplayBuf;DWORD dw = GetLastError(); FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_IGNORE_INSERTS,NULL,dw,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf,0, NULL );// Display the error message and clean up
lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, (lstrlen((LPCTSTR)lpMsgBuf)+lstrlen((LPCTSTR)lpszFunction)+40)*sizeof(TCHAR)); StringCchPrintf((LPTSTR)lpDisplayBuf, LocalSize(lpDisplayBuf) / sizeof(TCHAR),TEXT("%s failed with error %d: %s"), lpszFunction, dw, lpMsgBuf); MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK); LocalFree(lpMsgBuf);LocalFree(lpDisplayBuf);
}

转载于:https://www.cnblogs.com/liujx2019/p/10874512.html

[Windows API] Listing the Files in a Directory,可用来数文件夹下有多少个子文件(夹)...相关推荐

  1. C/C++遍历Windows文件夹下的所有文件

    因为文件夹中往往包含文件和文件夹.想要遍历所有的文件,必须遍历文件夹中所有的文件夹.很显然,这个描述满足递归的两个要素:(1)问题的规模在不断的缩小,且新问题的模式与旧问题相同.很显然文件夹中含有子文 ...

  2. Windows修改C盘下的用户(Users)文件夹下的汉字文件夹

    Windows修改C盘下的用户文件夹下的中文名文件夹 问题描述 解决方法 第一步,把系统管理员Administrator账户激活 第二步,注销当前登录的用户,登录Administrator账户 第三步 ...

  3. linux下C++遍历文件夹下的全部文件;Windows/Linux下C++批量修改文件名,批量删除文件...

    Linux下 C++遍历目录下所有文件 1 rename(image_path.c_str(), image_path_new.c_str()); 2 remove(image_path_move.c ...

  4. windows编写bat脚本删除隐藏文件夹下的所有文件

    删除隐藏文件夹下的所有文件 @echo off cd C:\Users\%username%\path\ #path修改为自己系统隐藏文件夹所在的文件夹路径名称 dir del /q/a/f/s .s ...

  5. windows cmd删除指定文件夹下指定时间文件

    cmd 命令 forfiles /p "E:\Service\RAService\CustomerPhoto\pic" /s /m *.jpg /d -365 /c "c ...

  6. Windows下对文件夹下所有图片批量重命名(附C++,python,matlab代码)

    原文件夹 重命名之后 C++ #include <iostream> #include <io.h> //对系统文件进行操作的头文件 #include <string&g ...

  7. Windows批处理命令快速获取文件夹下特定类型的文件名(2022.5.15)

    Windows批处理命令快速获取文件夹下特定类型的文件名 (2022.5.15) 1.需求分析 2.batch简介 3.代码实现 3.1 八种编程语言分别实现 3.1.1 C# 实现 3.1.2 C+ ...

  8. windows文件夹中的哪些文件可以删除

    经过以下的设置后,你的系统会更加清爽.简洁.高效! 1.打开"我的电脑"-"工具"-"文件夹选项"-"查看"-在&quo ...

  9. windows如何快速的将一个文件夹指定的文件名称写入到指定文件中

    在windows系统,如果想在一个地方用很多文件的名称,但是手动一个一个添加是很慢的,这时候可以在本文件夹下,按住键盘shift+鼠标右键,弹出右键菜单中选在此打开powershell窗口,弹出窗口, ...

  10. Windows API详情

    Windows API详情 原文链接:https://docs.microsoft.com/zh-cn/windows/desktop/apiindex/windows-api-list 桌面和服务器 ...

最新文章

  1. 《JavaScript快速全栈开发》作者Azat Mardanov:现在是拥抱Node技术栈的最佳时机
  2. Windows10下搭建Java环境(最新教程)
  3. 面试必问之JVM原理
  4. 【PTA天梯赛CCCC -2017决赛L2-4】部落 (25 分)(图染色)
  5. MySQL流浪记(一)—— 初步认识数据库的内涵
  6. 12019.LMT84模拟温度传感器
  7. 可道云 docker 群晖_利用群晖NAS同步文献
  8. 计算机毕业设计之 [含论文+答辩PPT+任务书+中期检查表+源码等]S2SH动漫论坛[包运行成功]
  9. 自动控制原理分析工作原理以及方框图做题过程
  10. dr优先级默认_OSPF路由器不能成为DR/BDR唯一的方法:DR优先级=0
  11. 最新PS 2020版发布!逆天黑科技一键P图看哭设计师!
  12. Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教、用户、管理员)+可以用于学习SSM框架、javaweb、maven项目入门
  13. 想在家挣钱,这几个项目可以让你月入过万
  14. 无刷直流电机的PWM调制方式介绍
  15. 青山不语,碧海无痕,数字山河间的中国脊梁
  16. 代码整洁之道 Clean Code 读书笔记
  17. 学术诚信的重要性_增强学术诚信意识,弘扬严谨学风
  18. kip6000打印服务器系统安装,KIP6000驱动安装步骤.
  19. 饭局给领导送礼被打脸,高手用这3个技巧,感情和人脉“双到位”
  20. 多线程【全面学习 图文精讲】

热门文章

  1. 祝贺自己的博客又一个关键字排名上去了
  2. corrplot包与ggcorrplot相关图(二)
  3. flask加载配置文件的三种方法
  4. Python中ndarray数组切片问题a[-n -x:-y]
  5. 获取ItemsControl中当前item的binding数据
  6. css3 实现图片旋转
  7. linux中ONBOOT=yes
  8. godaddy虚拟主机access数据库中文乱码的解决方法
  9. JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
  10. 思必驰重磅发布AI芯片,同时推出产业破局战略