调用了7z.exe。首先先搜索硬盘内的压缩文件,没有搜索到直接进行下载(有待添加)。其次,进行文件的压缩和解压...部分功能有待完善,代码没有任何技术含量,无非是保持对技术的热爱。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <time.h>
const int LEN = 1024;
void ShowTime();
void Search();
void Compress();
void Decompress();
void Help();
int main()
{
int n = 0;
while(n!=5)
{
ShowTime();
printf(" ================================================= \n");
printf(" +++++++++++++++++++++++++++++++++++++++++++++++++ \n");
printf(" 1++++++++++++++++++++Search+++++++++++++++++++++1 \n");
printf(" 2+++++++++++++++++++Compress++++++++++++++++++++2 \n");
printf(" 3+++++++++++++++++++Decompress++++++++++++++++++3 \n");
printf(" 4+++++++++++++++++++++Help++++++++++++++++++++++4 \n");
printf(" 5+++++++++++++++++++++Exit++++++++++++++++++++++5 \n");
printf(" +++++++++++++++++++++++++++++++++++++++++++++++++ \n");
printf(" ================================================= \n");
printf("请选择操作类型:\n");
scanf("%d",&n);
switch(n)
{
case 1 : Search();break;
case 2 : Compress();break;
case 3 : Decompress();break;
case 4 : Help();break;
case 5 : return 0;break;
default : printf("输入错误\n");
}
}
return 0;
}
void ShowTime()
{
time_t now;
now = time(NULL);
printf(" %s", ctime(&now));
Sleep(1000);
//system("cls");
}
void DirectoryList(LPCSTR Path)
{
WIN32_FIND_DATA FindData;
HANDLE hError;
int FileCount = 0;
char FilePathName[LEN];
char FullPathName[LEN];
strcpy(FilePathName, Path);
strcat(FilePathName, "\\*.*");
hError = FindFirstFile(FilePathName, &FindData);
if (hError == INVALID_HANDLE_VALUE)
{
printf("搜索失败!");
return;
}
while(::FindNextFile(hError, &FindData))
{
if (strcmp(FindData.cFileName, ".") == 0
|| strcmp(FindData.cFileName, "..") == 0 )
{
continue;
}
wsprintf(FullPathName, "%s\\%s", Path,FindData.cFileName);
FileCount++;
printf("\n%d %s ", FileCount, FullPathName);
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
printf("<Dir>");
DirectoryList(FullPathName);
}
}
}
void Search()
{
char path[LEN];
printf("\nplease input the file Directory\n");
scanf("%s",path);
DirectoryList(path);
}
void Compress()
{
char filename[100] = {'\"'};
char cmd[300] = "7z.dll a ";
//DOS下进入有空格文件夹需要加双引号
printf("\nplease input the file name\n");
scanf("%s", filename);
strcat(cmd, "output ");//生成名为output压缩文件
strcat(cmd, filename);//要压缩的文件名
system(cmd);
//system("cls");
//cmd 命令最后是这样的:"C:\Program Files\WinRAR\winrar" a output filename
//其中a是程序运行的参数 output是压缩包文件名 filename是输入的文件名
//rar命令的语法请参照rar帮助文档
printf("压缩完成!!\n");
Sleep(2000);
}
void Decompress()
{
char filename[100] = {'\"'};
char cmd[300] = "7z.dll e ";
printf("\nplease input the file name\n");
scanf("%s", filename);
strcat(cmd, filename);
system(cmd);
printf("解压完成!!\n");
Sleep(2000);
}
void Help()
{
char cmd[300] = {0};
strcpy(cmd,"7z.dll -h");
system(cmd);
Sleep(2000);
}