int FcComd(int k) { 首块号 if (s<1) return s; //路径错误 if(k!=2) { } short int i,j=0,s1,s2,size1,size2,s,s3; char attrib='\\0',*FileName,*FileName1,Buffer1,Buffer2; FCB* fcbp ,*fcbp1,*fcbp2 ; s=ProcessPath(comd[1],FileName,k,0,'\\20');//取FileName所在目录的cout<<\出错:输入命令格式错误,请重新输入\return false; //失败,返回 //取FileName的首块号s1=FindFCB(FileName,s,attrib,fcbp); (查其存在性) fcbp1=fcbp; if (s1<0) { } s3=ProcessPath(comd[2],FileName1,k,0,'\\20');//取FileName1所在目cout<<\要比较的文件不存在。\\n\return -1; 录的首块号 if (s3<1) //路径错误 //失败,返回 //取FileName的首块号return s3; s2=FindFCB(FileName1,s3,'\\40',fcbp); (查其存在性) fcbp2=fcbp; - 10 -
if (s2<0) { } size1=fcbp1->Fsize; //取文件一的长度 size2=fcbp2->Fsize; //取文件二的长度 if(size1==0&&size2||size2==0&&size1) { cout<<\两个文件的长度不同:\cout<<\文件\的长度\cout<<\要比较的文件不存在。\\n\return -2; cout<<\文件\的长度\ } while(s1>0&&s2>0) { for(i=0;i return false; } } if(i 返回 是 读取文件内容并输出文件要求执行的指令 文件是否存在 否 显示错误信息 是 调用FindFCB()查找文件 的首块号 指定路径是否正确 否 是 调用ProcessPath( )查找文 件的指定路径 命令格式是否正确 否 开始 设计思想:batch命令从磁盘文件batchfile逐行读入命令行执行,直到batchfile中所有命令行都执行完毕为止。 具体方法: int BatchComd(int k) { - 13 - short i,s,size,jj=0,x=0, y=0; char attrib='\\0',*FileName; char gFileName[PATH_LEN]; //存放文件全路径名 FCB* fcbp; if(k!=1) { } else { s=ProcessPath(comd[1],FileName,k,0,'\\020');//取FileName所在目录cout<<\命令参数中应该只有一个文件名。\\n\ return -1; 的首块号 } s=FindFCB(FileName,s,attrib,fcbp); //取FileName的首块号(查其存在性) strcpy(gFileName,temppath); i=strlen(temppath); if (temppath[i-1]!='/') strcat(gFileName,\ if (s<1) //路径错误 return s; //失败,返回 strcat(gFileName,FileName); //构造文件的全路径名 if (s<0){ } cout<<\文件\不存在。\\n\return -3; if (s==0) cout<<\文件\是空文件\\n\- 14 -