📄 system1.cpp
字号:
// System1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
void CMD_MD(void);
void CMD_RD(void);
void CMD_DIR(void);
void CMD_REN(void);
//void CMD_SET(void);
void CMD_HELP(void);
void CMD_COPY(void);
void CMD_TYPE(void);
void CMD_CD(char *flag);
void Init(void);
BOOL IsVolExists(char part);
void SearchVol(void);
void Translate(char *cmd);
char me[]={(char)192,(char)238,(char)206,(char)176,(char)200,(char)187,'\0'};
stack<int> IntStack; //定义int类型的栈
char szSysPath[MAX_PATH+1]; //系统目录
char szCurrentPath[MAX_PATH+1]; //当前工作目录
char directory[50]; //记录临时文件夹
char Vol[27]; //记录可用盘符
int main(int argc, char* argv[])
{
cout<<"****操作系统实验一****模拟DOS系统****03计算机(1)班****";
char cmd[50];
Init();
while(1)
{
cout<<szCurrentPath<<">"; //显示当前工作路径
cin>>cmd; //接受用户命令
strlwr(cmd);
if(strcmp(cmd,"exit")==0)return 0; //退出
if(strcmp(cmd,"quit")==0)return 0; //退出
Translate(cmd); //处理用户输入的命令
}
return 0;
}
void Translate(char *cmd)
{
char temp[MAX_PATH];
if(strcmp(cmd,"")==0)return;
if(strcmp(cmd,"cd")==0)
{
strcat(strcpy(temp,"dir /a/w/o:n/d/a:d/b "),szCurrentPath);
system(temp);
cout<<"请输入目录名:";
cin>>directory;
strcat(strcat(strcpy(temp,szCurrentPath),"\\"),directory);
if(!PathFileExists(temp)) //判断目录是否存在
return;
CMD_CD(directory);
}
else if(strcmp(cmd,"cd..")==0)
{
CMD_CD("cd..");
}
else if(strcmp(cmd,"help")==0)
{
CMD_HELP();
}
else if(strcmp(cmd,"copy")==0)
{
CMD_COPY();
}
else if(strcmp(cmd,"md")==0)
{
CMD_MD();
}
else if(strcmp(cmd,"rd")==0)
{
CMD_RD();
}
else if(strcmp(cmd,"ren")==0)
{
CMD_REN();
}
else if(strcmp(cmd,"dir")==0)
{
CMD_DIR();
}
else if(strcmp(cmd,"type")==0)
{
CMD_TYPE();
}
else if(PathFileExists(cmd))
{
for(int i=1,j=0;cmd[i]!='\0';i++)
if(cmd[i-1]=='\\'&&cmd[i]=='\\')
return;
strcpy(szCurrentPath,strupr(cmd));
}
else
{
system(cmd);
}
}
void SearchVol(void)
{
char c[]="A:\\";
int i,j=0;
for(i=0;i<26;i++,c[0]++)
{
if(PathFileExists(c))
{
Vol[j]=c[0];
j++;
}
}
Vol[j]='\0';
}
BOOL IsVolExists(char part)
{
SearchVol();
int i=0;
strupr(&part);
while(Vol[i]!='\0')
{
if(Vol[i]==part)return true;
i++;
}
return false;
}
void Init(void)
{
cout<<me;
::GetSystemDirectory(szSysPath,MAX_PATH); //获取系统目录
::GetCurrentDirectory(MAX_PATH,szCurrentPath); //获取当前目录
for(int i=0;i<4;i++)
cout<<(char)0x2A;
cout<<0x776825C6;
for(i=0;i<4;i++)
cout<<(char)0x2A;
cout<<endl;
}
void CMD_CD(char *flag)
{
if(strcmp(flag,"cd..")==0) //模拟cd..命令,切换到上一级目录
{
for(int i=0;szCurrentPath[i]!='\0';i++)
if(szCurrentPath[i]=='\\')
IntStack.push(i);
szCurrentPath[IntStack.top()]='\0';
IntStack.pop();
}
else //模拟cd 命令,进入下一级目录
{
for(int j=0;szCurrentPath[j]!='\0';j++);
IntStack.push(j);
strcat(szCurrentPath,"\\");
strcat(szCurrentPath,flag);
}
}
void CMD_DIR(void)
{
char cmd[MAX_PATH];
strcat(strcpy(cmd,"dir /a "),szCurrentPath);
system(cmd);
}
void CMD_COPY(void)
{
char si[MAX_PATH],di[MAX_PATH],name[50],cmd[50];
system("dir/a/w");
cout<<"要复制的文件:";
cin>>name;
strcat(strcat(strcpy(si,szCurrentPath),"\\"),name);
if(!PathFileExists(si))
{
cout<<si<<"不存在"<<endl;
return;
}
cout<<"目标文件路径:";
cin>>di;
strcat(strcat(strcat(strcpy(cmd,"copy "),si)," "),di);
system(cmd);
}
void CMD_TYPE(void)
{
char si[MAX_PATH],name[50],cmd[50];
system("dir/a/w");
cout<<"要查看的文件:";
cin>>name;
strcat(strcat(strcpy(si,szCurrentPath),"\\"),name);
if(!PathFileExists(si))
{
cout<<si<<"不存在"<<endl;
return;
}
strcat(strcpy(cmd,"type "),si);
system(cmd);
}
void CMD_MD(void)
{
char name[50],cmd[50];
cout<<"请输入新建文件夹名:";
cin>>name;
strcat(strcpy(cmd,"md "),name);
if(system(cmd)==0)
cout<<"新建文件夹"<<name<<"成功!"<<endl;
}
void CMD_RD(void)
{
char name[50],cmd[50];
cout<<"请输入文件夹名:";
cin>>name;
strcat(strcpy(cmd,"rd "),name);
if(system(cmd)==0)
cout<<"删除文件夹"<<name<<"成功!"<<endl;
}
void CMD_REN(void)
{
char si[MAX_PATH],di[MAX_PATH],name[50],cmd[50];
system("dir/a/w");
cout<<"要改名的文件:";
cin>>name;
strcat(strcat(strcpy(si,szCurrentPath),"\\"),name);
if(!PathFileExists(si))
{
cout<<"目标文件不存在"<<endl;
return;
}
cout<<"新文件名:";
cin>>di;
strcat(strcat(strcat(strcpy(cmd,"ren "),si)," "),di);
if(system(cmd)==0)
cout<<"更改"<<name<<"为"<<di<<"成功!"<<endl;
}
/*
void CMD_SET(void)
{
char si[MAX_PATH],cmd[50];
cout<<"请输入路径:";
cin>>si;
if(!PathFileExists(si))
{
cout<<si<<"不存在"<<endl;
return;
}
strcat(strcpy(cmd,"set "),si);
system(cmd);
}
*/
void CMD_HELP()
{
cout<<"系统帮助:"<<endl;
cout<<"CD命令:\t输入cd按回车,输入目录名则可进入指定目录."<<endl;
cout<<"\t\t输入cd..按回车,则可返回上级目录目录."<<endl;
cout<<endl;
cout<<"CLS命令:\t输入cls按回车,清屏命令."<<endl;
cout<<endl;
cout<<"COPY命令:\t输入copy按回车,输入源文件名和目标路径."<<endl;
cout<<"\t\t按回车,则可将源文件复制到目标路径下."<<endl;
cout<<endl;
cout<<"DATE命令:\t输入date按回车,设置日期."<<endl;
cout<<endl;
cout<<"DIR命令:\t输入dir按回车,显示当前文件夹的文件."<<endl;
cout<<endl;
cout<<"EXIT命令:\t输入exit按回车,退出系统."<<endl;
cout<<endl;
cout<<"MD命令:\t输入md按回车,再输入新文件夹名,则在当前目录新建一个文件夹."<<endl;
cout<<endl;
cout<<"PATH命令:\t输入path按回车,显示系统环境目录路径."<<endl;
cout<<endl;
cout<<"RD命令:\t输入rd按回车,输入文件夹名,则此文件夹."<<endl;
cout<<endl;
cout<<"SET命令:\t输入set按回车,显示系统环境变量."<<endl;
cout<<endl;
cout<<"TIME命令:\t输入time按回车,设置时间."<<endl;
cout<<endl;
cout<<"TYPE命令:\t输入type按回车,输入文件名,则显示文件内容."<<endl;
cout<<endl;
cout<<"REN命令:\t输入ren按回车,再输入文件夹名,则此文件夹."<<endl;
cout<<endl;
cout<<"VOL命令:\t输入vol按回车,显示分区信息."<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -