use*_*517 1 windows batch-file
下面代码的输出只重复"不平衡括号"x100.如果我取出括号并离开%% i%5,它只是循环数字1-100而没有mod.如果我添加或减去它,它工作正常.为什么不能找到mod,特别是?
:MAIN
setlocal EnableDelayedExpansion
set result=0
for /L %%i in (1,1,100) do (
set /a result= (%%i%5)
echo !result!
)
endlocal
Run Code Online (Sandbox Code Playgroud)
我有其他一些代码,我似乎无法找到问题.如果输入非零数字,它就可以正常工作.
@echo off
:MAIN
set /p number1= "Enter 1st number:”
if %number1%== "9" goto second_num
:second_num
set /p number2= “Enter 2nd number:”
if %number2%== “0” goto error
if %number2%== "9" goto division
:division
set /a result= (%number1%/%number2%)
echo %result%
pause
exit
:error
echo "Error. Cannot divide by 0. Start over."
goto MAIN
Run Code Online (Sandbox Code Playgroud)
但如果第二个数字是0,它的输出是:
Divide by zero error.
ECHO is off.
Press any key to continue...
Run Code Online (Sandbox Code Playgroud)
当我按下一个键时,程序结束而不是去:错误.我意识到if语句有问题.为什么说ECHO已关闭?有人可以指点我正确的方向吗?
set /a result= (%%i%5)
Run Code Online (Sandbox Code Playgroud)
是你的问题.右括号由FOR所看到 其右括号,所以订了不对称的括号.
更改)在SET以^)-插入符号(^)逃脱),告诉它的一部分的处理器set,不是的for
当你在它的时候,%5应该是%%5奇怪的,%逃避%,而不是^处理器需要被告知它%不是%5- 批处理文件的第五个参数.
下一个问题是由于不了解环境变量总是一个字符串.唯一需要引用的时间是它可能包含某些字符,如SPACES.该语句if %var%==7将字符串contents of var与字符串7进行比较,因此您的语句the contents of the variable与"9"(或其他)进行比较.这些永远不会是平等的.现在 - "%number2%"可能是相同的,因为两个实际的STRINGS可能相等.
如果ECHO没有任何东西作为其"参数",那么它会报告其状态,即ON或OFF.RESULT由于尝试除以0的错误,SInce 不是SET,语句归结为,ECHO因此适当地报告了回声状态.
解决方法是尝试ECHO.- 点会给出ECHO一些东西可以咀嚼而且会产生一个空行,因为%result%设置为[nothing]
| 归档时间: |
|
| 查看次数: |
5024 次 |
| 最近记录: |