📄 getdir.cpp
字号:
// GetDir.cpp : Defines the entry point for the console application.
//
#include <stdafx.h>
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <string>
bool GetDirList(char* dir,char* res);
/*------------------------------------------------------------------------
* main
*------------------------------------------------------------------------
*/
// 运行命令:
// #dir . 显示当前文件夹的所有内容
// #dir .. 显示上一级文件夹的所有内容,并把上一级文件夹设为当前文件夹。
// #dir folder 显示文件夹folder的内容,并把folder设为当前文件夹。用ls也可以。
// #exit 退出。用quit也可以。
int main(int argc, char* argv[])
{
char res[1000000]="",inbuf[256]="",cmd[256]="",param[256]="";
while(1)
{
printf("#"); // 显示命令提示标志
fflush(stdin); // 清空输入缓冲区
scanf("%[^\n]s",inbuf); // 先从键盘输入字符串到inbuf,一直到\n
sscanf(inbuf," %s %[^\n]s",cmd,param); // 将inbuf的字串转入cmd和param,
// 第一项先跳过开头的所有空格字符,然后读入一个字符串(%s)到cmd,
// 然后再跳过其后的所有空格字符,再读入一个字符串直到回车(%[^\n]s)到param.
if (strcmp(cmd,"exit")==0 || strcmp(cmd,"quit")==0) //退出命令
{
break;
}
if (strcmp(cmd,"dir")==0 || strcmp(cmd,"ls")==0) //文件夹列表命令
{
GetDirList(param,res);
printf("%s",res);
}
else
{
printf("Command Error!\n");
}
}
return 0;
}
/*-------------------------------------------------------------
* GetDirList(char* dir,char* res)
* 功能:显示某个目录下的内容列表
* 参数: dir-要显示的文件夹
* res-返回的结果,该文件夹下的内容列表。
*---------------------------------------------------------------
*/
bool GetDirList(char* dir,char* res)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
HANDLE hFilehandle = INVALID_HANDLE_VALUE;
char DirSpec[MAX_PATH];
DWORD dwError;
char curDir[1000];
if(strcmp(dir,"")==0)
strcpy(dir,".");
strcpy(curDir,dir);
strcpy(res,"");
sprintf (res,"%sTarget directory is %s\n", res,curDir);
strncpy (DirSpec, dir, strlen(curDir)+1);
strncat (DirSpec, "\\*", 3);
hFind = FindFirstFile(DirSpec, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
sprintf (res,"%sInvalid file handle. Error is %u\n",res,GetLastError());
return (false);
}
else
{
int num = 0;
do
{
SYSTEMTIME sysCreationTime,sysLastWriteTime;
char sSize[16],sName[500],sCreationTime[50],sLastWriteTime[50];
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
sprintf(sName,"[%s]",FindFileData.cFileName);
else
sprintf(sName,"%s",FindFileData.cFileName);
sName[32]=sName[33]=sName[34]='.';sName[35]='\0';
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
sprintf(sSize,"%10s KB","-");
else
sprintf(sSize,"%10u KB",FindFileData.nFileSizeLow/1024);
FileTimeToSystemTime(&FindFileData.ftCreationTime,&sysCreationTime);
FileTimeToSystemTime(&FindFileData.ftLastWriteTime,&sysLastWriteTime);
sprintf(sCreationTime,"%u-%u-%u %u:%u:%u",sysCreationTime.wYear,sysCreationTime.wMonth,sysCreationTime.wDay,sysCreationTime.wHour,sysCreationTime.wMinute,sysCreationTime.wSecond);
sprintf(sLastWriteTime,"%u-%u-%u %u:%u:%u",sysLastWriteTime.wYear,sysLastWriteTime.wMonth,sysLastWriteTime.wDay,sysLastWriteTime.wHour,sysLastWriteTime.wMinute,sysLastWriteTime.wSecond);
sprintf(res,"%s%3d %-36s %8s %s\n",res,++num,sName,sSize,sLastWriteTime);
} while ((FindNextFile(hFind, &FindFileData)) != 0);
dwError = GetLastError();
FindClose(hFind);
if (dwError != ERROR_NO_MORE_FILES)
{
sprintf (res,"%sFindNextFile error: %u\n", res, dwError);
return (false);
}
}
SetCurrentDirectory(curDir);
return (true);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -