⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bird.cpp

📁 提取 Mozilla Thunderbird 邮件格式数据
💻 CPP
字号:
// bird.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include <windows.h>

char Months[13][4]={
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
};


struct  TS{
	char week[4];
	char month[4];
	char day[3];
	char hms[9];
	char year[5];
};

TS ts;

int MonthToInt(char Mon[])
{
	for(int i=0;i<12;i++)
	{
		if(strncmp(Mon,Months[i],3)==0) return i+1;
	}
	return 0;
}

//From - Thu Nov 01 21:53:03 2007
//0123456789012345678901234567890
void ToStandTime(char *sTime)
{
	int st;
	for(st=0;st<3;st++) ts.week[st]=sTime[st+7]; ts.week[st]='\0';
	for(st=0;st<3;st++) ts.month[st]=sTime[st+11]; ts.month[st]='\0';
	for(st=0;st<2;st++) ts.day[st]=sTime[st+15]; ts.day[st]='\0';
	for(st=0;st<8;st++) ts.hms[st]=sTime[st+18]; ts.hms[st]='\0';
	for(st=0;st<4;st++) ts.year[st]=sTime[st+27]; ts.year[st]='\0';
	
}

void Usage()
{
	printf("Usage:  bird.exe OpenFile SavedFile start end\n");
	printf("Example:bird.exe Inbox tmp.log 20070101 20071212\n");
	
}

int main(int argc, char* argv[])
{
	//a.exe Inbox log.log stime etime;

	if(argc!=5){
		Usage();
		return 0;
	}
	char StandTime[10]="0";
	char *StartTime;
	char *EndTime;
	char *OpenFile;
	char *SavedFile;
	OpenFile = argv[1];
	SavedFile = argv[2];
	StartTime = argv[3];
	EndTime = argv[4];
	
	


	FILE *fp,*fw;
	if((fp = fopen(OpenFile,"r"))==NULL)
	{
		printf("File no exsit.");
		return 0;
	}
	if((fw = fopen(SavedFile,"w"))==NULL)
	{
		printf("Create file failed.");
		return 0;
	}

	char Mark[]="From - ";
	char SourceLine[200]="0";

	char *Marked; //From -
	int WriteIt =0; //是否写进文件
	int Count=0;


	HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );

	

	fgets(SourceLine,200,fp);
	Marked=strstr(SourceLine,Mark);

	while(!feof(fp))
	{
		
			if(Marked>0)
		{
			ToStandTime(SourceLine);
			sprintf(StandTime,"%s%d%s",ts.year,MonthToInt(ts.month),ts.day);
		
			if((!(strncmp(StartTime,StandTime,8)>0))&&(!(strncmp(EndTime,StandTime,8)<0)))
			{
				WriteIt = 1;
				Count ++;

				CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo;
				GetConsoleScreenBufferInfo(hConsole,&ConsoleScreenBufferInfo);
				COORD pos = {0, 0};
				ConsoleScreenBufferInfo.dwCursorPosition.X = 0;
				SetConsoleCursorPosition ( hConsole, ConsoleScreenBufferInfo.dwCursorPosition );
		//		SetConsoleCursorPosition ( hConsole, pos);
				printf("Getting... %d ", Count);
				fflush(stdout);
				Sleep(5);
			}
			else
				WriteIt = 0;

		}
			if(WriteIt) {fprintf(fw,"%s",SourceLine); fflush(fw);	}	
		fgets(SourceLine,200,fp);
		Marked=strstr(SourceLine,Mark);	
	
	}

	fcloseall();
	printf("\nok, total:%d",Count);

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -