int CmdProcessing() { if (!_tcscmp(cmdTokenList[0], _T("exit"))){ return TRUE; } else if (!_tcscmp(cmdTokenList[0], _T("pwd"))) { TCHAR cDIR[MAX_STR_LEN]; GetCurrentDirectory(MAX_STR_LEN, cDIR); _tprintf(_T("%s\n"), cDIR); } else if (!_tcscmp(cmdTokenList[0], _T("cls"))) { _tsystem(_T("cls")); } else if (!_tcscmp(cmdTokenList[0], _T("start"))) { StartProcess(_T("windows")); } else if (!_tcscmp(cmdTokenList[0], _T("list"))) { if (!PrintProcessList()) { return -1; } } else if (!_tcscmp(cmdTokenList[0], _T("cd"))) { ChangeCurrentDirectory(); } else if (!_tcscmp(cmdTokenList[0], _T("kill"))) { if (!KillProcess()) { return -1; } } else if (!_tcscmp(cmdTokenList[0], _T("dir"))) { if (!PrintFileList()) { return -1; } } else if (!_tcscmp(cmdTokenList[0], _T("mkdir"))) { if (!MakeDirectory()) { return -1; } } else if (!_tcscmp(cmdTokenList[0], _T("rmdir"))) { if (!RemoveDirectory()) { return -1; } } else if (!_tcscmp(cmdTokenList[0], _T("del"))) { if (!DeleteFile()) { return -1; } } else if (!_tcscmp (cmdTokenList[0], _T("ren"))) { if (!RenameFile()) { return -1; } } else if (!_tcscmp(cmdTokenList[0], _T("help"))) { _tprintf(_T("pwd\t현재 디렉토리를 보여줍니다.\n")); _tprintf(_T("cls\t화면을 지웁니다.\n")); _tprintf(_T("help\t명령어 목록을 보여줍니다.\n")); _tprintf(_T("exit\t프로그램을 종료합니다.\n")); _tprintf(_T("echo\t문자열을 출력합니다.\n")); _tprintf(_T("start\t프로그램을 실행합니다.\n")); _tprintf(_T("list\t실햄중인 프로세스 목록을 보여줍니다.\n")); _tprintf(_T("kill\t프로세스를 강제로 종료시킵니다. \n")); _tprintf(_T("dir\t현재 디렉토리 하위의 파일 목록을 보여줍니다. \n")); _tprintf(_T("mkdir\t현재 디렉토리 하위에 새 디렉토리를 생성합니다. \n")); _tprintf(_T("rmdir\t현재 디렉토리 하위의 지정한 디렉토리를 삭제합니다. \n")); _tprintf(_T("del\t현재 디렉토리 하위의 지정한 파일을 삭제합니다. \n")); _tprintf(_T("ren\t현재 디렉토리 하위의 지정한 파일 이름을 변경합니다.\n")); _tprintf(_T("cd\t현재 디렉토리를 변경합니다.\n")); _tprintf(_T("history\t지금까지 입력한 명령어 목록을 보여줍니다.\n")); _tprintf(_T("type\t파일의 내용을 화면에 출력합니다.\n")); _tprintf(_T("sort\t입력한 문자열을 정렬하여 출력합니다.(Ctrl+Z로 종료)\n")); _tprintf(_T("!(명령어)\t가장 최근에 수행한 (명령어)를 수행합니다.\n")); _tprintf(_T("!!\t바로 전에 수행한 명령어를 실행합니다.\n")); } else if (!_tcscmp(cmdTokenList[0], _T("echo"))) { EchoString(); } else if (!_tcscmp(cmdTokenList[0], _T("type"))) { TypeTextFile(); } else if (!_tcscmp(cmdTokenList[0], _T("sort"))) { SortString(); } else if (!_tcscmp(cmdTokenList[0], _T("history"))) { PrintHistory(); } else { StartProcess(cmdTokenList[0]); } return 0; }
/************************************************************************************************** 函数用途:main函数,程序入口;读取txt列表,并分割选中的文件 输入参数:无 返回参数:无 */ void main(void) { FILE *fpSrc,*fpDec; unsigned char* buff; int i,j,select,FileNum = 0,singleFileSize; long size; char fileName_Suffix[100],fileName[100],fileNameTmp[100]; Show();//显示一些无关紧要的信息 FileNum = ReadFileList();//读取txt文件列表 PrintFileList(FileNum);//打印txt文件列表 printf("\n如果列表显示无误,请输入需要分割的文本文档(txt文件)前的序号: "); //菜单显示 select = ReScanf(1,FileNum);//输入序号 /* 下面五行内容,用于分别去除字符串中最后一个回车和后缀名 */ strcpy(fileName_Suffix,List[select].Name); j = strlen(fileName_Suffix)-1; fileName_Suffix[j] = '\0';//字符用单引号,去掉最后一个回车 strcpy(fileName,fileName_Suffix); fileName[j-4] = '\0';//将文件名去除后缀 printf("\n你选择的是:“%s”,",fileName_Suffix); if( ( fpSrc = fopen(fileName_Suffix,"r" ) ) == 0 )//判断是否有文件 { printf("\n\n对不起,文件木有找到或打不开啊!程序退出!\n"); system("pause");//任意键继续 exit(1); } fseek(fpSrc, 0L,SEEK_END);//将指针移动到末位 size = ftell(fpSrc);//计算文件长度,目前指针的位置既是文件的长度 if( size < 10000) { printf("这个文件长度为:“%ld”字节。\n连10000字节都不到,分个毛线啊,自己手动分割去。程序退出!\n",size); system("pause");//任意键继续 exit(0); } printf("这个文件长度为:%ld字节。\n期望平均分割成几个文件?请输入小于99的数值:",size); select = ReScanf(2,99);//输入分割成几段的数值 singleFileSize = size/select;//计算每个小文件大小 printf("\n下面将会把“%s”分割成%d个大小为:%d字节(%dKB)的文件。\n\n",fileName_Suffix,select,singleFileSize,singleFileSize/1024); system("pause");//任意键继续 fseek(fpSrc, 0L,SEEK_SET);//将指针移动到首位 for(i = 1 ; i<=select ; i++ ) { buff = (unsigned char*)malloc(singleFileSize);//动态申请单个小文件大小所需的内存 sprintf(fileNameTmp,"%s - 第%02d段.txt",fileName,i);//文件名拼接 fread(buff,singleFileSize,1,fpSrc);//从fpSrc中读取数据到buff fpDec = fopen(fileNameTmp,"w");//新建小文件 fwrite(buff,singleFileSize,1,fpDec);//将buff数据写入到fpDec free(buff);//释放内存 fclose(fpDec);//关闭目标文件 printf("\n“%s”已成功生成!",fileNameTmp); } fclose(fpSrc);//关闭源文件 printf("\n分割完毕!程序退出!"); system("pause");//任意键继续 exit(0); }