文件夾自動(dòng)歸類(lèi)小程序onkeyclassification,由吾愛(ài)大神原創(chuàng)制作分享的一個(gè)實(shí)用小工具,能自動(dòng)將文件按照修改創(chuàng)建日期來(lái)進(jìn)行分類(lèi)并聲稱對(duì)應(yīng)的文件夾,對(duì)于需要批量處理大量文件內(nèi)容的用戶來(lái)說(shuō)是一個(gè)非常實(shí)用的小工具,節(jié)省文件查找時(shí)間。本次放出文件夾自動(dòng)歸類(lèi)小程序PC版下載。
文件夾自動(dòng)歸類(lèi)小程序作者說(shuō)明
有時(shí)候手機(jī)里值得保存的照片、視頻多了,就想分類(lèi)保存在電腦里?刹⒉皇敲看螐腃amera相冊(cè)里拷備出來(lái)我都有閑心按時(shí)間排序一個(gè)個(gè)給他歸好類(lèi),并且很多時(shí)候都是隔幾個(gè)月了想備份一下,有什么重要的事情記錄下來(lái)了又備份一下。然后給總文件夾起個(gè)名字,方便記憶。
這樣的方式導(dǎo)致我有時(shí)候想找點(diǎn)什么照片的時(shí)候,總是在一大片照片海里用縮略圖瞇著眼睛找,甚至有時(shí)候錯(cuò)過(guò)了都不知道。直到用的時(shí)候,才發(fā)現(xiàn)用創(chuàng)建時(shí)間來(lái)歸類(lèi)是一件多么方便的事情。
于是,疫情在家閑得沒(méi)事的我就寫(xiě)了這么個(gè)小程序,一鍵把當(dāng)前文件夾下的所有文件(僅文件)按修改時(shí)間創(chuàng)建文件夾,并將文件移入相應(yīng)時(shí)間的文件夾下(以月為單位),查找上限為2年,每月可操作文件為200(當(dāng)然,這些都可在源碼里更改)。
文件夾自動(dòng)歸類(lèi)小程序源碼一覽
#include <stdio.h>
#include <windows.h>
//創(chuàng)建文件夾所需頭文件
#include <io.h>
#include <direct.h>
#define YEAR 2
//存放時(shí)間,用作文件夾名
TCHARfoldername[YEAR*12][200] = {0};
intt;
voidFileTimeCompare(SYSTEMTIME FileTime){
charbuf[200] = {0};
inti, p;
memset(buf, 0, 200);
//printf("t=%d\n", t);
wsprintf(buf,"%d-%d", FileTime.wYear, FileTime.wMonth);
if(t==0 &&strcmp(foldername[t], buf) != 0){
strcpy(foldername[t], buf);
t++;
}
//信息是否重復(fù)的開(kāi)關(guān),如果是則為1
p=0;
for(i=0; i<t; i++ ){
if(strcmp(foldername[i], buf) == 0){
p=1;
}
}
if(p==0){
strcpy(foldername[t], buf);
t++;
}
}
voidRenfile(char*filename, SYSTEMTIME FileTime){
charbuf[MAX_PATH];
charnewpath[MAX_PATH];
inti;
memset(buf, 0, MAX_PATH);
memset(newpath, 0, MAX_PATH);
wsprintf(buf,"%d-%d", FileTime.wYear, FileTime.wMonth);
for(i=0; i<t; i++){
if(strcmp(foldername[i], buf) == 0){
wsprintf(newpath,".\\%s\\%s", buf, filename);
if(rename(filename, newpath) == 0)
printf("%s\t\t已移動(dòng)!\n", filename);
}
}
}
voidFFind(char*path,char*myname);
voidTFind(char*path,char*myname);
voidmain(intargc,char*argv[]){
charpath[MAX_PATH] = {0};
//創(chuàng)建文件名緩沖區(qū)
charfilename[MAX_PATH] = {0};
inti;
//獲取當(dāng)前路徑
getcwd(path, MAX_PATH);
printf("path=%s\n", path);
strcat(path,"\\*.*");
t=0;
//第一遍,遍歷所有文件,將其時(shí)間進(jìn)行收集對(duì)比
FFind(path, argv[0]);
//創(chuàng)建文件夾
for(i=0; i<t; i++){
if(_access(foldername[i], 0) == -1){
_mkdir(foldername[i]);
printf("%s\t\t文件夾已創(chuàng)建\n", foldername[i]);
}
}
//第二遍,遍歷并移動(dòng)所有文件
TFind(path, argv[0]);
printf("\n\n已移動(dòng)所有文件!\n");
system("pause");
//printf("當(dāng)前路徑為:%s\n", GetPath());
//printf("發(fā)現(xiàn)創(chuàng)建時(shí)間為%s的文件,創(chuàng)建文件夾。\n",GetCreatTime());
}
voidFFind(char*path,char* myname){
//創(chuàng)建查找結(jié)構(gòu)體
WIN32_FIND_DATA FindFile;
//創(chuàng)建查找文件句柄
HANDLEhFind;
charfilename[MAX_PATH] = {0};
SYSTEMTIME spec_time;
hFind = FindFirstFile(path, &FindFile);
if(INVALID_HANDLE_VALUE == hFind){
printf("創(chuàng)建文件查找結(jié)構(gòu)體出錯(cuò)!\n");
exit(0);
}
do{
if(FindFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){
if(0 !=strcmp(FindFile.cFileName,".") && 0 !=strcmp(FindFile.cFileName,"..")){
//發(fā)現(xiàn)目錄,暫不處理
}
}else{
//找到文件,查看其最后一次修改日期
//排除自身
getcwd(filename, MAX_PATH);
strcat(filename,"\\");
strcat(filename, FindFile.cFileName);
if(strcmp(filename, myname) != 0){
FileTimeToSystemTime(&FindFile.ftLastWriteTime, &spec_time);
FileTimeCompare(spec_time);
}
}
}while(FindNextFile(hFind, &FindFile));
}
voidTFind(char*path,char*myname){
//創(chuàng)建查找結(jié)構(gòu)體
WIN32_FIND_DATA RenFile;
//創(chuàng)建查找文件句柄
HANDLEtFind;
charfilename[MAX_PATH] = {0};
SYSTEMTIME spec_time;
tFind = FindFirstFile(path, &RenFile);
if(INVALID_HANDLE_VALUE == tFind){
printf("創(chuàng)建tFind文件查找結(jié)構(gòu)體出錯(cuò)!\n");
exit(0);
}
//第二遍遍歷文件,移動(dòng)文件
do{
if(RenFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){
if(0 !=strcmp(RenFile.cFileName,".") && 0 !=strcmp(RenFile.cFileName,"..")){
//發(fā)現(xiàn)目錄,暫不處理
}
}else{
//找到文件并移動(dòng)至已創(chuàng)建目錄
//排除自身
//strcpy(filename, getcwd(path, MAX_PATH));
getcwd(filename, MAX_PATH);
strcat(filename,"\\");
strcat(filename, RenFile.cFileName);
if(strcmp(filename, myname) != 0){
FileTimeToSystemTime(&RenFile.ftLastWriteTime, &spec_time);
Renfile(RenFile.cFileName, spec_time);
}
}
}while(FindNextFile(tFind, &RenFile));
}