怎么使system()命令不弹出DOS界面
还有就是要列出文件夹下面的所有文件 (包括子文件夹下面的文件但不列出子文件夹)
dir /b /s>filesist.txt的话会列出子文件夹 我不要子文件夹
[解决办法]
#include "stdafx.h" #include <windows.h> #define FILEILTER "*.*"BOOL IsRoot(LPCTSTR lpszPath) { TCHAR szRoot[4]; wsprintf(szRoot, "%c:\\", lpszPath[0]); return (lstrcmp(szRoot, lpszPath) == 0); } void FindInAll(LPCTSTR lpszPath) { TCHAR szFind[MAX_PATH]; lstrcpy(szFind, lpszPath); if (!IsRoot(szFind)) lstrcat(szFind, "\\"); lstrcat(szFind, FILEILTER); // 找所有文件 WIN32_FIND_DATA wfd; HANDLE hFind = FindFirstFile(szFind, &wfd); if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败 return; do { if (wfd.cFileName[0] == '.') continue; // 过滤这两个目录 if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { //这里对目录进行递归遍历,如果关系目录相关的内容,这里continue即可 TCHAR szFile[MAX_PATH]; if (IsRoot(lpszPath)) wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); else { wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName); FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归 } } else { TCHAR szFile[MAX_PATH]; if (IsRoot(lpszPath)) { wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); } else { wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName); printf("%s\n",szFile); } // 对文件进行操作 } } while (FindNextFile(hFind, &wfd)); FindClose(hFind); // 关闭查找句柄 } int main(int argc, char* argv[]) { FindInAll("C:\\TEST"); return 0; }