选择题:
1~5 CCCDD 2~10 BDBDD
简答题:
得分点概要:
1、有区别的(1分)
2、用&连接会导致set的延迟,解决则需开启变量延迟并用!代替%在扩住变量(2分)
3、用&&连接,当前一条命令执行不成功时后面的命令将不会执行(2分)
4、用|连接时,上一条命令的stdout输出会作下一条命令的stdin输入(1分)
5、用连接符连接时,:做标签以及::做注释会失效并导致下面的命令不执行(2分)
6、在for和if用括号包括的子块中,除了标签及注释,用连接符连接和换行并无明显区别(2分)
编写题:
1、
思路一:使用set/p =^内容<nul,每个字符输出一次。难点在于判断下个字符是否为空(用if判断时可能因特殊字符导致出错退出)
思路二:使用set的替换功能,把变量中的&替换成^&等,再用echo输出时会进行转义。难点在于找出所有特殊符号
范例(思路二):
@echo off
set /p a=请输入:
set "a=%a:^=^^%"
set "a=%a:&=^&%"
set "a=%a:|=^|%"
set "a=%a:<=^<%"
set "a=%a:>=^>%"
echo %a%
pause>nul
得分点概要:
1、能完成最终效果(5分)
2、对于任何特殊字符都不会出错退出,所有特殊字符可参考cmd /?(5分)
3、代码10行以内,多1行扣1分,本项0分封顶(5分)
4、不使用第三方工具,包括debug等产生的效果(3分)
5、不使用变量延迟(1分)
6、不使用临时文件(1分)
2、
思路:通过判断输入的变量中是否有=判定是计算表达式还是设置表达式,进行进一步处理
范例:
@echo off
set ans=0
:loop
cls
set "ex="
echo 表达式:
set /p ex=
echo %ex%|findstr =>nul
if %errorlevel%==1 (
set /a ans=%ex%
) else (
set /a %ex%
set ans=设置变量成功!
)
echo 结果:
echo %ans%
pause>nul
goto loop
得分点概要:
1、能完成最终效果(5分)
2、能实时设置和调用各种变量,调用批处理使用的自定变量时不发生错误(5分)
3、代码25行以内,多1行扣1分,本项0分封顶(5分)
4、不使用第三方工具,包括debug等产生的效果(3分)
5、不使用变量延迟(1分)
6、不使用临时文件(1分)
欢迎光临 批处理之家 (http://www.bathome.net/) | Powered by Discuz! 7.2 |