嘉定都市网

标题: [求助]批处理问题批处理问题 [打印本页]

作者: puppy525    时间: 2004-8-12 10:33
标题: [求助]批处理问题批处理问题
编写批处理文件

1.编写批处理文件BP.BAT,存在考盘根目录下,在Win98的命令行界面使用此文件,能实现以下功能。(假定所有未指明路径的文件都在C:\US中)
  用COPY命令显示当前目录下文本文件ABC.TXT的内容。
  如果子目录D:\DATA中存在文件HELP.TXT,则先在该文件的尾部添加一行文字:7/14/02 ,再用一条命令将文本文件D:\CJ.TXT的内容添加到后面。
  如果批命令后跟有参数,则先在屏幕上显示该参数,再将该参数添加在已有环境变量KB原有值的后面。(提示:以上两个“如果”之间不是简单的互相排斥关系)。
  无论何种情况,显示C盘根目录中(不包括下级子目录)主名以A开头、扩展名为DAT的全部文件的目录信息,并按文件长度升序排列,长度相同时按主名字符降序排列,每项占一行。

copy .\abc.txt con
if exist d:\data\help.txt goto aa
goto bb
:aa
echo "7/14/02">>help.txt
type D:\CJ.TXT>>d:\data\help.txt    这里为什么要用TYPE命令?
:bb
if not exist '%1'=='' goto cc
ecoh %1
set kb=%kb%%1
:cc

dir c:\a*.dat         /s-n /w



2.编写批处理文件BP.BAT,存在考盘根目录下,在Win98的命令行界面使用此文件,能实现以下功能。(假定所有未指明路径的文件都在C:\US中)
   已有子目录D:\DATA1和D:\DATA2,都没有下级子目录,其中一个子目录下存有扩展名为TXT的文件,另一子目录下没有扩展名为TXT的文件。用一行命令将存有TXT文件的那个子目录下的全部文件复制到子目录D:\DATA3中,但不复制另一子目录下的文件。(提示:IF EXIST 后面的文件名可以使用通配符)
  如果批处理命令后无参数,则先在D盘当前目录的下级子目录FD下建立新子目录FF,然后用虚拟的驱动器名F:代表这个新子目录;否则,屏幕显示批处理命令的第1个参数,然后用虚拟的驱动器名F:代表C盘的当前目录。
无论何种情况,将E盘根目录下(不包括下级子目录)的全部扩展名为DAT的文件(包括隐含和系统属性的文件)复制到虚拟驱动器F:的根目录下。
if exist d:\data1\*.txt  goto aa
if exist d:\data2\*.txt copy *.txt d:\data3
goto bb
:aa
copy d:\data1\*.txt d:\data3
:bb
if exist '%1'==''  goto cc
md d:\.\fd\ff
c:\us\subst f: d:\.\fd\.fd
goto dd
:cc
ecoh '%1'
c:\us\subst f: c:\.
:dd
c:\us\xcopy e:\*.dat f:\ /h





3.编写批处理文件BP.BAT,存在考盘根目录下,在Win98的命令行界面使用此文件,能实现以下功能。(假定所有未指明路径的文件都在C:\\US中)
   用一行命令,为当前目录中的两种文件改名,一种是文件名以A开头,扩展名是DAT,另一种是文件名以B开头,扩展名是BIN,新的文件名是在旧的文件名前加上字母X。
  如果批处理命令后的第一参数为$,则设置环境变量KB的值为DOC;如果批处理命令后的第一参数为&或#,则设置环境变量KB的值为XLS,其它情况设置环境变量KB的值为RTF。
无论何种情况,先显示Win98的版本信息,然后用内部命令删除子目录D:\\XYZ(XYZ下没有子目录,仅有一些文件)。

for %%a in (.\a*.dat .\b*.bin) do ren *.* x*.*
if exist '%1'=='$' goto aa
if exist '%1'=='&' goto bb
if exist '%1'=='#' goto cc
set kb=rtf
goto dd
:aa
set kb=doc
goto dd
:bb
set kb=xls
goto dd
:cc
set kb=doc
:dd
ver
c:\us\attrib -h -s d:\xyz\*.*
del d:\xyz\*.*
rd d:\xyz




4.编写批处理文件BP.BAT,存在考盘根目录下,在Win98的命令行界面使用此文件,能实现以下功能。(假定所有未指明路径的文件都在C:\\US中)
   用格式化命令尽快地清除B盘已有的全部内容并使其能够启动命令行界面。
如果D:\\BATCH中有文件SCP.BAT,则执行该批文件,并且在执行完毕后,不再回到BP.BAT继续执行;否则先进入允许输入汉字的状态(注意:这一命令如果使用不当,会影响其他命令的执行),再以非窗口方式启动16位文本编辑器EDIT.COM,编辑修改文本文件D:\\HELP.TXT,编辑完后撤销允许输入汉字的状态,然后显示这个文件的内容,满屏时暂停,等看完后按任意键才继续显示后续内容。
  把子目录D:\\OLD(不包括下级子目录)中的全部文件复制到子目录D:\\NEW中,但D:\\NEW中已有同名文件,且修改日期和时间不早于源文件者不复制。

c:\us\format b:/q
if exist d:\batch\scp.bat goto aa
c:\us\pdo95
c:\us\start /max c:\us\edit.com d:\help.txt
quit
dir d:\help.txt /p
goto bb
:aa
scp.bat
exit
:bb
c:\us\xcopy d:\old\*.* d:\new /h /d:


此贴由 puppy525 在 2004-08-12 17:25:55 最后编辑
       

此贴由 puppy525 在 2004-08-12 17:27:00 最后编辑
作者: flytosea    时间: 2004-8-12 15:16
第一题,分数:2
正确答案

copy abc.txt con

if exist d:\\data\\help.txt GOTO L1
GOTO L2
1
ECHO \"7/14/02\">>help.txt
TYPE D:\\CJ.TXT>>d:\\data\\help.txt
2


if NOT "%1"=="" GOTO L3
ECHO %1
SET KB=%KB%%1

3

dir c:\\a*.dat   /s-n /w
       

其余的题目,得分也不会高,因为结构全错了

错误的很大一个原因是IF语句

iF 条件 COMMAND
注意COMMAND只能是一条命令,不能是两条命令

比如
DIR C: GOTO AA
其中DIR C:是一条命令
GOTO AA也是一条命令,那么这两条命令不能写在一行,请仔细修改自己的答案,我再看,好吗?



此贴由 flytosea 在 2004-08-12 15:21:16 最后编辑
作者: YIYO│ζθζι    时间: 2004-8-12 15:52
老师你说的

iF 条件 COMMAND
如果后面跟1条命令不也是可以的啊?无论是goto还是内部、外部命令。因为第2条命令通过回车换行后,不会和第一条command相互排斥了。(Too many parameters - goto)

SET KB=%KB%%1
%kb%;%1 需要;么?
       

此贴由 YIYO│ζθζι 在 2004-08-12 15:54:40 最后编辑
作者: puppy525    时间: 2004-8-12 17:37
受老师一指点
茅塞顿开
作者: flytosea    时间: 2004-8-13 09:24
老师你说的

iF 条件 COMMAND
如果后面跟1条命令不也是可以的啊?无论是goto还是内部、外部命令。因为第2条命令通过回车换行后,不会和第一条command相互排斥了。(Too many parameters - goto)

听不懂什么意思~~~

SET KB=%KB%%1
%kb%;%1 需要;么?----不需要




欢迎光临 嘉定都市网 (http://www.jiading.com.cn/) Powered by Discuz! X3.1