コード例 #1
0
ファイル: windows.cpp プロジェクト: jwvg0425/OS_HomeWork
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;
}
コード例 #2
0
ファイル: SplitTxt.c プロジェクト: liyingxuan/cutTXT
/**************************************************************************************************
函数用途: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);
}