[計(jì)算機(jī)軟件及應(yīng)用]Windows命令接口實(shí)驗(yàn)報(bào)告

上傳人:仙*** 文檔編號:27971167 上傳時(shí)間:2021-08-22 格式:DOC 頁數(shù):37 大?。?.69MB
收藏 版權(quán)申訴 舉報(bào) 下載
[計(jì)算機(jī)軟件及應(yīng)用]Windows命令接口實(shí)驗(yàn)報(bào)告_第1頁
第1頁 / 共37頁
[計(jì)算機(jī)軟件及應(yīng)用]Windows命令接口實(shí)驗(yàn)報(bào)告_第2頁
第2頁 / 共37頁
[計(jì)算機(jī)軟件及應(yīng)用]Windows命令接口實(shí)驗(yàn)報(bào)告_第3頁
第3頁 / 共37頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《[計(jì)算機(jī)軟件及應(yīng)用]Windows命令接口實(shí)驗(yàn)報(bào)告》由會員分享,可在線閱讀,更多相關(guān)《[計(jì)算機(jī)軟件及應(yīng)用]Windows命令接口實(shí)驗(yàn)報(bào)告(37頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、 操作系統(tǒng)課程設(shè)計(jì)報(bào)告 作者:半童 合肥工業(yè)大學(xué) 獨(dú)立之精神,自由之思想! Windows命令接口實(shí)驗(yàn) 一.實(shí)驗(yàn)題目: 第29題——操作系統(tǒng)接口:Windows命令接口。(3人) 4分 二.實(shí)驗(yàn)任務(wù): 1.設(shè)計(jì)要求: l 為Windows操作系統(tǒng)建立兼容的DOS命令接口,文件與目錄命令; l 具體命令:DIR, RD,CD,MD, DEL,MOVE,REN, COPY, XCOPY, TIME, DATE,SORT,重定向命令>,<.,|,MORE,TY

2、PE ,CLS,EXIT命令格式可參照Windows的CMD.EXE或MS-DOS提供的命令; l 設(shè)計(jì)命令的名稱、參數(shù)等格式; l 可以字符形式接收命令,執(zhí)行命令,然后顯示命令執(zhí)行結(jié)果. 2.設(shè)計(jì)目的: (1)DIR命令:能夠正確顯示一個(gè)目錄里面的子目錄和文件 (2)RD命令:能夠刪除一個(gè)空目錄 (3)CD命令:能夠打開一個(gè)存在的目錄 (4)MD命令:能夠建立一個(gè)空目錄 (5)DEL命令:能夠刪除一個(gè)文件 (6)MOVE命令:能夠移動(dòng)一個(gè)目錄或文件 (7)REN命令:能夠重命名一個(gè)目錄或文件 (8)XCOPY命令:能夠拷貝整個(gè)目錄 (8)TIME命令:顯示系統(tǒng)的時(shí)

3、間 (8)DATE命令:顯示系統(tǒng)的日期 (8)SORT命令:對文本內(nèi)容進(jìn)行分類 (8)MORE命令:逐步分屏顯示 (8)TYPE命令:顯示文本內(nèi)容 (8)CLS命令:清楚屏幕顯示 (8)EXIT命令:退出 三:實(shí)驗(yàn)環(huán)境: 1. PC機(jī)一臺 386以上 2. Microsoft Visual Studio2010 軟件 3. 實(shí)現(xiàn)語言:C語言 四:原理及算法描述: 1.基本原理: 用戶利用聯(lián)機(jī)命令接口實(shí)現(xiàn)與機(jī)器的交互時(shí),先在終端的鍵盤上打入所需的命令,由終端處理程序接受該命令,并將它顯示在終端屏幕上。當(dāng)一條命令輸入完后,由命令解釋程序?qū)γ钸M(jìn)行分析,然后執(zhí)行

4、相應(yīng)命令的處理程序。 2.算法描述: (1)存貯輸入的各命令參數(shù) void store_parameter(char *buffer,char *parameter[10],int *para_num) 說明:將輸入的命令一條一條存儲parameter[10]中,最大允許的參數(shù)個(gè)數(shù)為10個(gè)。 算法描述:為buffer設(shè)置一個(gè)指針buffer_point,如果該指針向下移動(dòng),碰到空格,繼續(xù)向下移動(dòng),直到遇到字符,讀進(jìn)各存儲變量中parameter[10],最后如果遇到’\0’,則結(jié)束。 (2)瀏覽一個(gè)路徑下的目錄和文件 void my_dir(char *a[],int *

5、num) 說明:該命令只能顯示當(dāng)前目錄中的文件和子目錄和當(dāng)前目錄中子目錄中的文件和子目錄。并無如Windows中命令參數(shù)如此豐富。主要是考慮其復(fù)雜性,予以簡化了。 算法描述:如果只接受到mydir命令,后面并無其他參數(shù)時(shí),顯示當(dāng)前目錄下文件和子目錄。如果接受到兩個(gè)參數(shù),如果第二個(gè)參數(shù)(表示當(dāng)前目錄中子目錄)存在,則顯示該目錄下文件和子目錄,如果不存在,則報(bào)錯(cuò)。 (3)刪除一個(gè)存在的目錄,如果不存在,刪除失敗! void my_rd(char *a[],int *num) 算法描述:如果該目錄存在且為空目錄,則刪除,否則失敗。 (4)打開一個(gè)存在的目錄,如果不存在,打開失敗!

6、 void my_cd(char *a[],int *num) 算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要打開的目錄。如果該目錄存在,則成功,否則失敗。 (5)創(chuàng)建一個(gè)目錄 void my_md(char *a[],int *num) 算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要建立的目錄。如果存在該目錄,失敗,否則成功。 (6)刪除一個(gè)存在的文件,如果不存在,刪除文件失敗! void my_del(char *a[],int *num) 算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要?jiǎng)h除的文件。如果該文件存在,則刪除成功,否則失敗。 (7)移動(dòng)一個(gè)存在的文件,否則,移

7、動(dòng)失敗 void my_move(char *a[],int *num) 算法描述:如果接受到三個(gè)參數(shù),其中第二個(gè)參數(shù)表示存在的文件或目錄,第三個(gè)參數(shù)表示將要移動(dòng)到的參數(shù)。如果第二個(gè)參數(shù)不存在,則失敗,存在,成功。 (8)重命名一個(gè)已經(jīng)存在的文件,否則,重命名失敗! void my_ren(char *a[],int *num) 算法描述:如果接受到三個(gè)參數(shù),其中第二個(gè)參數(shù)表示將要重命名的目錄或文件,第三個(gè)參數(shù)表示將要重命名的新的名字。 (9)拷貝文件 void my_xcopy(char *a[],int *num) 算法描述:如果接受到三個(gè)參數(shù),其中第二個(gè)參數(shù)表示存在的目錄

8、或文件,第三個(gè)表示將要拷貝成的目錄或文件。 (10)顯示系統(tǒng)的時(shí)間 void my_time(char *a[],int *num) 算法描述:如果接受到一個(gè)參數(shù),調(diào)用系統(tǒng)的時(shí)間函數(shù),參數(shù)正確則輸出系統(tǒng)時(shí)間。 (11)顯示系統(tǒng)的日期 void my_date(char *a[],int *num) 算法描述:如果接受到一個(gè)參數(shù),調(diào)用系統(tǒng)的日期函數(shù),參數(shù)正確則輸出當(dāng)時(shí)日期。 (12)對文本內(nèi)容進(jìn)行分類 void my_sort(char *a[],int *num) 算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要分類的文本文檔。如果該文件存在,則分類成功,否則失敗。 (13)

9、逐步分屏顯示文本內(nèi)容 void my_more(char *a[],int *num) 算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要分屏顯示的文本文檔。如果該文件存在,則分屏顯示成功,否則失敗。 (14)顯示文本內(nèi)容 void my_type(char *a[],int *num) 算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要顯示的文本文檔。如果該文件存在,則顯示成功,否則失敗。 (15)清除屏幕顯示 void my_cls(char *a[],int *num) 算法描述:如果接受到一個(gè)參數(shù),調(diào)用系統(tǒng)的清屏函數(shù),參數(shù)正確則清除屏幕的輸入輸出。 (16)退出,后面可帶退出

10、參數(shù) void my_exit(char *a[],int *num) 算法描述:可以接受小于10個(gè)的參數(shù),其中第一個(gè)參數(shù)表示退出。后面幾個(gè)參數(shù)一起表示輸出的信息。 五.設(shè)計(jì)思路描述: 1.本課程設(shè)計(jì)調(diào)用到的API函數(shù)有: (1)typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DW

11、ORD nFileSizeLow; DWORD dwOID; TCHAR cFileName[MAX_PATH]; } WIN32_FIND_DATA; 該結(jié)構(gòu)存放著所找到文件的詳細(xì)信息,通過第一個(gè)字段,我們可以判斷找到的文件是目錄還是文件,通過cFileName可以獲得該文件的文件名,繼而可以對找到的文件進(jìn)行操作。 (2)HANDLE FindFirstFile(LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData ); 根據(jù)文件名查找文件,如執(zhí)行成功,返回一個(gè)搜索句柄。如果出錯(cuò),返回一個(gè)INVALID_HANDLE

12、_VALUE常數(shù)。應(yīng)該用FindClose函數(shù)關(guān)閉這個(gè)句柄。 (3)BOOL FindNextFile( HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData );該函數(shù)根據(jù)調(diào)用FindFirstFile函數(shù)返回的句柄查找下一個(gè)文件,返回值非零表示成功,零表示失敗。如不再有與指定條件相符的文件,會將GetLastError設(shè)置成ERROR_NO_MORE_FILES。 (4)BOOL FindClose( HANDLE hFindFile );該函數(shù)用來關(guān)閉FindFirstFile函數(shù)創(chuàng)建的一個(gè)搜索句柄。 (5)HANDLE Creat

13、eFile(LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORDdwCreationDispostion , DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); 該函數(shù)創(chuàng)建,打開,或截取一個(gè)文件。它返回一個(gè)對象訪問句柄。也可以返回和打開一個(gè)目錄句柄。 (6)BOOL GetFileTime( HANDLE hFile, LPFILETIME lpCreationTime,

14、 LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime );該函數(shù)得到一個(gè)文件創(chuàng)建,最近訪問,最近修改日期,時(shí)間。 (7)GetCurrentDirectory(DWORD nBufferLength,LPWSTR lpBuffer );該函數(shù)得到當(dāng)前目錄,存放在lpBuffer中。 (8) BOOL RemoveDirectory(LPCTSTR lpPathName);該函數(shù)一個(gè)存在的空目錄。 (9)BOOL SetCurrentDirectory(LPCWSTR lpPathName);該函數(shù)設(shè)置當(dāng)前目錄。 (10BOOL

15、CreateDirectory(LPCTSTRlpPathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes ); 該函數(shù)創(chuàng)建一個(gè)新目錄。如果該文件存在,創(chuàng)建失敗。 (11)BOOL DeleteFile(LPCTSTR lpFileName);該函數(shù)刪除一個(gè)存在的文件。 (12)BOOL MoveFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName);該函數(shù)移動(dòng)或重命名一個(gè)文件或目錄(不管這個(gè)目錄里是否由子目錄或文件)。 (13)BOOL CopyFile(LPCTSTR lpExist

16、ingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists );該函數(shù)拷貝一個(gè)存在的文件或新文件。 (14)BOOL TimeFile(LPCTSTR lpExistingFileName);該函數(shù)調(diào)用輸出系統(tǒng)地時(shí)間。 (15)BOOL DateFile(LPCTSTR lpExistingFileName);該函數(shù)調(diào)用輸出系統(tǒng)地日期。 (16)BOOL SortFile(LPCTSTR lpExistingFileName);該函數(shù)打開文本文檔,將內(nèi)容進(jìn)行分類。 (17)BOOL MoreFile(LPCTSTR lpExisting

17、FileName);該函數(shù)打開文本文檔,將內(nèi)容進(jìn)行分屏顯示。 (18)BOOL TypeFile(LPCTSTR lpExistingFileName); 該函數(shù)打開文本文檔,將內(nèi)容進(jìn)行顯示。 (19)BOOL ClsFile(LPCTSTR lpExistingFileName);該函數(shù)清除屏幕輸入輸出的全部內(nèi)容。 2.重要算法: 其實(shí)談不上重要算法,只是對上述API函數(shù)的活學(xué)活用而已。其中我的 my_dir(char *a[],int *num)函數(shù)要稍微復(fù)雜點(diǎn)。其中涉及到一個(gè)文件或目錄時(shí)間日期的獲取和轉(zhuǎn)換,這點(diǎn)是需要注意的。在源程序中,我已經(jīng)給出詳細(xì)的注解。

18、還有,最后結(jié)束時(shí)得關(guān)閉創(chuàng)建文件的句柄和搜索句柄。這點(diǎn)非常重要。 3. 流程圖: 開始 輸入一個(gè)完整的命令 parameter[0]==”mydir” or “MYDIR” 執(zhí)行my_dir()函數(shù) parameter[0]==”myrd” or “MYRD” 執(zhí)行my_rd()函數(shù) parameter[0]==”mycd” or”MYCD” 執(zhí)行my_cd()函數(shù) parameter[0]==”mymd” or”MYMD” 執(zhí)行my_md()函數(shù) parameter[0]==”mydel” or”MYDEL” 執(zhí)行my_del()函數(shù) parameter[0

19、]==”mymove” or”MYMOVE” 執(zhí)行my_move()函數(shù) parameter[0]==”myren” or”MYREN” 執(zhí)行my_ren()函數(shù) parameter[0]==”myxcopy” or”MYXCOPY” 執(zhí)my_xcopy()函數(shù) parameter[0]==”myexit” or”MYEXIT” 執(zhí)行my_exit()函數(shù) 返回當(dāng)前目錄 存儲各命 令參數(shù) parameter[0]==”mytime” or”MYTIME” parameter[0]==”mydate” or”MYDATE” par

20、ameter[0]==”mysort” or”MYSORT” parameter[0]==”mymore” or”MYMORE” parameter[0]==”myxtype” or”MYTYPE” parameter[0]==”mycls” or”MYCLS” 執(zhí)my_time()函數(shù) 執(zhí)my_date()函數(shù) 執(zhí)my_sort()函數(shù) 執(zhí)my_more()函數(shù) 執(zhí)my_type()函數(shù) 執(zhí)my_ mycls()函數(shù) 七.實(shí)驗(yàn)步驟: (1)測試源程序是否正常,測試通過即可運(yùn)行Microsoft Visual Studio201

21、0 軟件 讓源程序生成執(zhí)行operating_system.exe,如圖: (2)將生成的operating_system.exe文件放置于要操作的文件夾內(nèi),并打開準(zhǔn)備進(jìn)行操作,如圖: 原目錄列表: (3)使用mydir命令正確顯示一個(gè)目錄里面的子目錄和文件,如圖: (4)使用myrd命令能夠刪除一個(gè)空目錄,如圖: (5)使用mycd能夠打開一個(gè)存在的目錄,如圖: (6)使用mymd命令能夠建立一個(gè)空目錄,如圖: (7)使用mydel命令能夠刪除一個(gè)文件,刪除后與前面的源目錄參照可知其刪除功能,如圖: (8)使用mymove命令能夠移動(dòng)一

22、個(gè)目錄或文件,移動(dòng)后與前面的源目錄參照可知其移動(dòng)功能,如圖: (9)使用myren命令能夠重命名一個(gè)目錄或文件,命名后與前面的源目錄參照可知其命名功能,如圖: (10)使用myxcopy命令能夠拷貝整個(gè)目錄,拷貝后與前面的源目錄參照可知其拷貝功能 (11)使用mytime命令能夠顯示系統(tǒng)的時(shí)間,如圖: (12)使用mydate命令能夠顯示系統(tǒng)的日期,如圖: (13)使用mysort命令能夠?qū)ξ谋緝?nèi)容進(jìn)行分類,分類后與前面的源目錄參照可知其分類功能,該功能是以首字母順序的方式進(jìn)行重排,如圖: (14)使用mymore命令能夠?qū)ξ谋緝?nèi)容進(jìn)行分屏顯示

23、,按Enter鍵可以逐步顯示文檔內(nèi)容,如圖: (15)使用mytype命令能夠顯示文本內(nèi)容,如圖: (16)使用CLS命令能夠清除屏幕的顯示內(nèi)容,如圖: (17)使用EXIT命令退出operating_system.exe 六.程序清單: (1)function.h 頭文件: //**************************************************************************************** //存貯輸入的各命令參數(shù) #include #include #i

24、nclude using namespace std; void store_parameter(char *buffer,char *parameter[10],int *para_num) { char *buffer_point = buffer; for((*para_num) = 0; *buffer_point != \0 && (*para_num) < 10; (*para_num)++) { parameter[(*para_num)] = (char*)malloc(64*sizeof(char)); int j = 0;

25、 //如果為空格,指針繼續(xù)移進(jìn) while(*buffer_point == ) { buffer_point++; } //如果不是空格,讀進(jìn)變量存儲區(qū) while(*buffer_point != && *buffer_point != \0) { *(parameter[(*para_num)]+j) = *buffer_point; buffer_point++; j++; } *(parameter[(*para_num)]+j) = \0; } } //**************

26、*********************************************************************** //瀏覽一個(gè)路徑下的目錄和文件 void my_dir(char *a[],int *num) { //瀏覽當(dāng)前目錄文件 if( (*num) == 1) { HANDLE obj_handle; char *lpFileName = (char*)malloc(64*sizeof(char)); WIN32_FIND_DATA* find_file = new WIN32_FIND_DATA(); //API函

27、數(shù)WIN32_FIND_DATA FILETIME lpCreationTime,lpLastAccessTime,lpLastWriteTime;//創(chuàng)建時(shí)間,最近訪問時(shí)間,最近修改時(shí)間 SYSTEMTIME systime;//定義系統(tǒng)時(shí)間 //獲取當(dāng)前目錄 GetCurrentDirectory(64,lpFileName); //API函數(shù)GetCurrentDirectory strcat(lpFileName,"\\*.*"); obj_handle = FindFirstFile(lpFileName,find_file);

28、//obj_handle初始化 API函數(shù)FindFirstFile(2) if(FindFirstFile(lpFileName, find_file) != INVALID_HANDLE_VALUE) //API函數(shù)FindFirstFile(2) { while (FindNextFile(obj_handle, find_file)) //API函數(shù)FindNextFile { HANDLE obj_dir = CreateFile(find_file->cFileName,GENERIC_READ,FILE_SHARE_REA

29、D | FILE_SHARE_DELETE \ |FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS, NULL); //API函數(shù)CreateFile if(GetFileTime(obj_dir,&lpCreationTime,&lpLastAccessTime,&lpLastWriteTime)) //API函數(shù)GetFileTime { FILETIME temp_time; FileTimeToLocalFil

30、eTime(&lpLastWriteTime, &temp_time); // 轉(zhuǎn)換成本地時(shí)間 FileTimeToSystemTime(&temp_time, &systime); // 轉(zhuǎn)換成系統(tǒng)時(shí)間格式 } printf("%d/%d/%d ",systime.wYear,systime.wMonth,systime.wDay);//年月日 printf("%d:%d:%d ",systime.wHour,systime.wMinute,systime.wSecond);//時(shí)分秒 printf("%s\n",fin

31、d_file->cFileName);// //printf("%d ",find_file->dwFileAttributes); CloseHandle(obj_dir);//API函數(shù)DWORD(1) } } FindClose(obj_handle); //API函數(shù)FindClose } //瀏覽其中目錄文件 else if((*num) == 2) { HANDLE obj_handle; char *lpFileName = (char*)malloc(64*sizeof(char)); cha

32、r *next_dir = (char*)malloc(64*sizeof(char)); WIN32_FIND_DATA* find_file = new WIN32_FIND_DATA(); //API函數(shù)WIN32_FIND_DATA FILETIME lpCreationTime,lpLastAccessTime,lpLastWriteTime;//創(chuàng)建時(shí)間,最近訪問時(shí)間,最近修改時(shí)間 SYSTEMTIME systime;//定義系統(tǒng)時(shí)間 WIN32_FIND_DATA* fd = new WIN32_FIND_DATA(); //API函數(shù)WIN3

33、2_FIND_DATA GetCurrentDirectory(64,lpFileName); //API函數(shù)GetCurrentDirectory //打開其中的某一個(gè)目錄 if(!SetCurrentDirectory(a[1])) //API函數(shù)SetCurrentDirectory printf("瀏覽目錄失敗,可能沒有此目錄!\n"); else { GetCurrentDirectory(64,next_dir); //API函數(shù)GetCurrentDirectory strcat(next

34、_dir,"\\*.*"); } obj_handle = FindFirstFile(next_dir, fd);//obj_handle初始化 API函數(shù)FindFirstFile(2) if(FindFirstFile(next_dir, find_file) != INVALID_HANDLE_VALUE) //API函數(shù)FindFirstFile(2) { while (FindNextFile(obj_handle, find_file)) //API函數(shù)FindNextFile { HANDLE obj_dir

35、 = CreateFile(find_file->cFileName,GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_DELETE \ |FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS, NULL); //API函數(shù)CreateFile if(GetFileTime(obj_dir,&lpCreationTime,&lpLastAccessTime,&lpLastWriteTime)) //API函數(shù)GetFileTime

36、 { FILETIME temp_time; //臨時(shí)變量 FileTimeToLocalFileTime(&lpLastWriteTime,&temp_time); FileTimeToSystemTime(&temp_time, &systime); //轉(zhuǎn)換成系統(tǒng)時(shí)間 } printf("%d/%d/%d ",systime.wYear,systime.wMonth,systime.wDay);//年月日 printf("%d:%d:%d ",systime.wHour,systime.wMin

37、ute,systime.wSecond);//時(shí)分秒 printf("%s\n",find_file->cFileName);// CloseHandle(obj_dir); } } FindClose(obj_handle); //API函數(shù)FindClose //返回上一個(gè)目錄 SetCurrentDirectory(lpFileName); //API函數(shù)SetCurrentDirectory } //參數(shù)個(gè)數(shù)大于等于3,警告錯(cuò)誤 else if((*num) >= 3) printf("語法格式

38、不正確!\n"); } //刪除一個(gè)存在的目錄,如果不存在,刪除失敗! void my_rd(char *a[],int *num) { if((*num) == 2) { if(!RemoveDirectory(a[1])) //API函數(shù)RemoveDirectory printf("刪除目錄失敗,可能沒有此目錄!\n"); else printf("刪除目錄成功!\n"); } else if((*num) == 1) { printf("正確語法格式為:\n"); printf("\t

39、 myrd directory\n"); } else printf("語法格式不正確!\n"); } //打開一個(gè)存在的目錄,如果不存在,打開失敗! void my_cd(char *a[],int *num) { if((*num) ==2) { if(!SetCurrentDirectory(a[1])) //API函數(shù)SetCurrentDirectory printf("打開目錄失敗,可能沒有此目錄!\n"); else printf("打開目錄成功!\n"); } else

40、if((*num) == 1) { printf("正確語法格式為:\n"); printf("\t mycd directory\n"); } else printf("語法格式不正確!\n"); } //創(chuàng)建一個(gè)目錄 void my_md(char *a[],int *num) { if((*num) == 2) { if(!CreateDirectory(a[1],NULL)) printf("創(chuàng)建新目錄失敗!"); else printf("創(chuàng)建新目錄成功\n"); } else

41、 if((*num) == 1) { printf("正確語法格式為:\n"); printf("\t mymd directory\n"); } else printf("語法格式不正確!\n"); } //刪除一個(gè)存在的文件,如果不存在,刪除文件失敗! void my_del(char *a[],int *num) { if((*num) == 2) { if(!DeleteFile(a[1])) //API函數(shù)DeleteFile printf("刪除文件失敗!\n"); else p

42、rintf("刪除文件成功!\n"); } else if((*num) == 1) { printf("正確語法格式為:\n"); printf("\t mydel file\n"); } else printf("語法格式不正確!\n"); } //移動(dòng)一個(gè)存在的文件,否則,移動(dòng)失敗 void my_move(char *a[],int *num) { if((*num) == 3) { if(!MoveFile(a[1],a[2])) //API函數(shù)MoveFile printf("移動(dòng)文件失敗,文件可

43、能不存在!\n"); else printf("文件移動(dòng)成功!\n"); } else if((*num) == 1) { printf("正確語法格式為:\n"); printf("\t mymove file\n"); } else printf("語法格式不正確!\n"); } //重命名一個(gè)已經(jīng)存在的文件,否則,重命名失敗! void my_ren(char *a[],int *num) { if((*num) == 3)

44、 { if(!MoveFile(a[1],a[2])) //API函數(shù)MoveFile printf("重命名文件失敗,文件可能不存在!\n"); else printf("重命名文件成功!\n"); } else if((*num) == 1) { printf("正確語法格式為:\n"); printf("\t myren file\n"); } else printf("語法格式不

45、正確!\n"); } //拷貝文件 void my_xcopy(char *a[],int *num) { if((*num) == 3) { if(!CopyFile(a[1],a[2],1)) //API函數(shù)CopyFile printf("拷貝文件失敗,文件可能不存在!\n"); else printf("拷貝文件成功!\n"); } else if((*num) == 1) { printf("正確語法格式為:\n"); printf("\t myxcopy file\n"); } else pri

46、ntf("語法格式不正確!\n"); } //顯示日期 void my_date() { system( "date"); } //顯示時(shí)間 void my_time() { system( "time"); } void my_sort(char *a[],int *num) { int lnum=0,min; char line[100][100],tmp[100];//行數(shù)、每行字符數(shù) string s[100]; ifstream infile(a[1]); if(!infile) { cout<<"無法打開文件"

47、<

48、t a=0;a<100;a++) { tmp[a]=line[x][a]; line[x][a]=line[min][a]; line[min][a]=tmp[a]; } } } ofstream outfile(a[1],ios::out); if(!outfile) { cout<<"文件寫入失敗"<

49、.close(); } } } //屏顯 void my_type(char *a[],int *num) { char ch[1000]; ifstream infile(a[1]); if(!infile) { cout<<"無法打開文件"<

50、quit=0; char ch[1000]; ifstream infile(a[1]); if(!infile) { cout<<"無法打開文件"<

51、化 infile.seekg(0,ios::beg);//把流指針重新定位到文件頭 if(count1<24) { for(l=0;l

52、<

53、)//輸入兩次空格,一次回車 { if(cin.get()==\n)//不加此判斷條件,會把回車符解釋成逐行顯示文件的命令 { if((count1-count2)>0&&(count1-count2)<24) { for(l=0;l<(count1-count2);l++) { infile.getline(ch,1000,\n); cout<

54、if((count1-count2)>24) { for(l=0;l<24;l++) { infile.getline(ch,1000,\n); cout<

55、 { cout< #i

56、nclude #include #include #include #include"function.h" //**************************************************************************************** // 主程序 //**************************************************************************************** int mai

57、n() { printf("\t=================================================\n");// printf("\t* 這是29題的文件和目錄操作系統(tǒng)課程設(shè)計(jì)! *\n");// printf("\t* OPERATING ORDER *\n");// printf("\t* 瀏覽文件和目錄: mydir *\n");// pr

58、intf("\t* 刪除目錄 : myrd *\n");// printf("\t* 打開目錄 : mycd *\n");// printf("\t* 建立目錄 : mymd *\n");// printf("\t* 刪除文件 : mydel *\n");// print

59、f("\t* 移動(dòng)文件 : mymove *\n");// printf("\t* 重命名文件 : myren *\n");// printf("\t* 拷貝文件 : myxcopy *\n");// printf("\t* 時(shí)間查詢 : mytime *\n");// printf("\t* 日期查詢

60、 : mydata *\n");// printf("\t* 文本排序 : mysort *\n");// printf("\t* 分屏顯示 : mymore *\n");// printf("\t* 文本輸出 : mytype *\n");// printf("\t* 清除屏幕 : mycls *\n");// prin

61、tf("\t* 退出 : myexit *\n");// printf("\t=================================================\n");// printf("\n"); //獲取當(dāng)前路徑 char *current_path = (char*)malloc(64*sizeof(char)); GetCurrentDirectory(64,current_path); //API函數(shù)GetCurrentDirectory prin

62、tf("%s-->",current_path); while(1) { //定義一個(gè)輸入命令緩沖區(qū),存儲輸入的一個(gè)或多個(gè)命令參數(shù) char *buffer = (char*)malloc(1024*sizeof(char)); //存放具體輸入的各命令參數(shù),參數(shù)最大數(shù)目為10 char *parameter[10]; //存放參數(shù)個(gè)數(shù) int *para_num = (int*)malloc(sizeof(int)); //輸入命令 gets(buffer); //將buffer中各參數(shù)存儲到paremeter中 store

63、_parameter(buffer,parameter,para_num); //解釋各命令,并執(zhí)行! if(strcmp(parameter[0],"mydir")==0 || strcmp(parameter[0],"MYDIR")==0) { my_dir(parameter,para_num); goto back_currentdirectory; } else if(strcmp(parameter[0],"myrd")==0 || strcmp(parameter[0],"MYRD")==0 ) { my_rd(par

64、ameter,para_num); goto back_currentdirectory; } else if(strcmp(parameter[0],"mycd")==0 || strcmp(parameter[0],"MYCD")==0 ) { my_cd(parameter,para_num); goto back_currentdirectory; } else if(strcmp(parameter[0],"mymd")==0 || strcmp(parameter[0],"MYMD")==0 ) { my_md

65、(parameter,para_num); goto back_currentdirectory; } else if(strcmp(parameter[0],"mydel")==0 || strcmp(parameter[0],"MYDEL")==0) { my_del(parameter,para_num); goto back_currentdirectory; } else if(strcmp(parameter[0],"mymove")==0 || strcmp(parameter[0],"MYMOVE")==0) {

66、 my_move(parameter,para_num); goto back_currentdirectory; } else if(strcmp(parameter[0],"myren")==0 || strcmp(parameter[0],"MYREN")==0) { my_ren(parameter,para_num); goto back_currentdirectory; } else if(strcmp(parameter[0],"myxcopy")==0 || strcmp(parameter[0],"MYXCOPY")==0) { my_xcopy(parameter,para_num); goto back_currentdirectory; } else if(strcmp(parameter[0],"mydate")==0 || strcmp(parameter[0],"MYDATE")==0) {

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!