3、下列代码中,能把a.txt文件的第一行内容赋值给变量a的是(不讨论特殊字符过滤):
A、for /f %%a in (a.txt) do set a=%%a
B、for /f "tokens=*" %%a in (a.txt) do set a=%%a
C、set /p a=<a.txt
D、type a.txt|set /p a=
7、有如下一批处理:
@echo off
set a=0
set b=0
for /l %%a in (1,1,5) do (
set /a a+=%%a
set /a b+=a
)
echo a=%a%,b=%b%
pause>nul
运行批处理后,则下面对结果预测正确的是:
A、显示“a=5,b=5”
B、显示“a=5,b=15”
C、显示“a=15,b=15”
D、显示“a=15,b=35”
8、有如下一批处理:
@echo off
set var=a
set a=b
call echo %%%%%var%%%%%
pause
则对运行结果预测正确的是:
A、显示“%%b%%”
B、显示“%a%”
C、显示“%b%”
D、显示“b”
编写题:
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分)