Windows 中文件夹及其子文件夹中的所有文件列表
List of all files inside the folder and its subfolders in Windows
我想通过访问 "C:\windows\system32\Tasks" 目录中的所有文件来列出任务计划程序下 运行 的所有文件。
程序应该递归地打开目录中的子文件夹并列出所有文件。我目前使用 Windows OS.
我尝试使用 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;
}
我想通过访问 "C:\windows\system32\Tasks" 目录中的所有文件来列出任务计划程序下 运行 的所有文件。
程序应该递归地打开目录中的子文件夹并列出所有文件。我目前使用 Windows OS.
我尝试使用 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;
}