- 论坛徽章:
- 0
|
首先给出正确的代码
- @echo off
- set a=9256f96fba23a1f2ad631433d1bec872
- set g=f62216cce796a9a5b3132a06d6b0e4dd
- set d=71d5e485ad801f78c8f416d33563dcd5
- set o=71d5e485ad801f78c8f416d33563dcd5
- if %d% == %o% (
- if %a% == %g% (goto ok) else (goto no)
- ) else (
- goto no
- )
- :end
- pause
- exit /b
- :ok
- echo.ok
- goto end
- :no
- echo.no
- goto end
复制代码
按照lz的题意 - 目的是比较文件的MD5值 如果 a=g 且 d=o的值 就执行 goto ok,否则执行error 但你的代码是错误的
从你的图片中可以看出:
a = 9256f96fba23a1f2ad631433d1bec872
g = f62216cce796a9a5b3132a06d6b0e4dd
d = 71d5e485ad801f78c8f416d33563dcd5
o = 71d5e485ad801f78c8f416d33563dcd5
我们来分析一下这一条语句 - if "%%d"=="%%o" (if "%%a"=="%%g" goto ok)else ( goto error)
首先比较 "%%d"=="%%o" yes|no?
yes, 再比较 "%%a"=="%%g" yes|no?
no. 整条if语句执行完毕
ps: lz只是写出当 %%a == %%g 跳转到 ok 在不等于的情况下什么都不做 继续执行下一条语句
这条if语句应该是包含在for语句中的 那么这时候 for 应该正好满足退出条件 所以 向下走 自然走到了 mkdir OKKKKKKKKKKK
lz可以把 :ok 和 :error 对换一下 即可看到不同的结果 即:
- if "%%a"=="%%g" (if "%%d"=="%%o" goto ok)else ( goto error)
- )
- )
- )
- )
- :error
- mkdir erorrrrrrrrr
- pause
- :ok
- mkdir OKKKKKKKKKKK
- pause
复制代码
or
- :error
- mkdir erorrrrrrrrr
- pause
- :ok
- mkdir OKKKKKKKKKKK
- pause
- if "%%a"=="%%g" (if "%%d"=="%%o" goto ok)else ( goto error)
- )
- )
- )
- )
复制代码
|
|