[英]List of all files inside the folder and its subfolders in Windows
我想通過訪問“ C:\\ windows \\ system32 \\ Tasks”目錄中的所有文件來列出在Task Scheduler下運行的所有文件。
該程序應遞歸地保持打開目錄中的子文件夾並列出所有文件。 我目前使用Windows操作系統 。
我嘗試使用COM庫,但它未在子文件夾中顯示任務。 我有60個任務,但只顯示12個。因此,我嘗試遍歷Tasks文件夾。
#include <stdio.h>
#include <dirent.h>
int main(void)
{
DIR *dir;
struct dirent *de;
if ((dir = opendir("C:\\Windows\\System32\\Tasks")) != NULL);
{
printf("The startup Programs are:\n");
while ((de = readdir(dir)) != NULL)
{
printf("%s\n", de->d_name);
}
closedir(dir);
}
getchar();
}
我希望輸出顯示當前文件夾和子文件夾中的所有文件。 但是,輸出僅顯示第一個文件夾的名稱並退出。
由於顯然沒有在Windows下遞歸列出目錄的完整,簡單的示例,因此以下是其中之一:
#include <windows.h>
#include <stdio.h>
void listdirs(char *dir, char *mask)
{
char fspec[1024], fname[1024];
WIN32_FIND_DATA dta;
HANDLE hDta;
sprintf(fspec,"%s/%s",dir, mask);
if ((hDta= FindFirstFile (fspec, &dta)) != INVALID_HANDLE_VALUE) {
do {
if ( !(dta.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
{
printf ("%s/%s\n", dir, dta.cFileName);
}
else
{
if (strcmp(dta.cFileName,".")!=0 && strcmp(dta.cFileName,"..")!=0 )
{
sprintf (fname, "%s\\%s", dir, dta.cFileName);
listdirs(fname, mask);
}
}
} while (FindNextFile (hDta, &dta));
FindClose(hDta);
}
}
int main (int argc, char *argv[])
{
listdirs(argv[1],argv[2]); // Usage: progname c:\MyDir *.*
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.