亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1739 | 回復: 2
打印 上一主題 下一主題

批處理if and 比較出現(xiàn)奇怪問題 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-10-31 18:17 |只看該作者 |倒序瀏覽
部分代碼
  1. if "%%a"=="%%g" (if "%%d"=="%%o" goto ok)else ( goto error)

  2. )
  3. )
  4. )
  5. )

  6. :ok
  7. mkdir OKKKKKKKKKKK
  8. pause

  9. :error
  10. mkdir erorrrrrrrrr
  11. pause
復制代碼
目的是比較文件的MD5值 如果 a=g 且 d=o的值 就執(zhí)行 goto ok,否則執(zhí)行error

我做了個測試,a和g 值不相等 d=o,  執(zhí)行正常 goto error了


但是參數(shù)的位置換下 if "%%d"=="%%o" (if "%%a"=="%%g" goto ok)else ( goto error)
這樣卻執(zhí)行了goto ok 了,奇怪!

所以請教下大家 是不是 做雙重判斷的時候 第二個if判斷失效?
代碼錯誤? 求教~!

論壇徽章:
0
2 [報告]
發(fā)表于 2012-11-18 16:03 |只看該作者
首先給出正確的代碼


  1. @echo off
  2. set a=9256f96fba23a1f2ad631433d1bec872
  3. set g=f62216cce796a9a5b3132a06d6b0e4dd
  4. set d=71d5e485ad801f78c8f416d33563dcd5
  5. set o=71d5e485ad801f78c8f416d33563dcd5

  6. if %d% == %o%  (
  7.         if %a% == %g% (goto ok) else (goto no)
  8. ) else (
  9.         goto no
  10. )

  11. :end
  12.         pause
  13.         exit /b

  14. :ok
  15.         echo.ok
  16. goto end

  17. :no
  18.         echo.no
  19. goto end
復制代碼


按照lz的題意 - 目的是比較文件的MD5值 如果 a=g 且 d=o的值 就執(zhí)行 goto ok,否則執(zhí)行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語句執(zhí)行完畢

ps: lz只是寫出當 %%a == %%g 跳轉(zhuǎn)到 ok 在不等于的情況下什么都不做 繼續(xù)執(zhí)行下一條語句

這條if語句應該是包含在for語句中的 那么這時候 for 應該正好滿足退出條件 所以 向下走 自然走到了 mkdir OKKKKKKKKKKK

lz可以把 :ok 和 :error 對換一下 即可看到不同的結(jié)果 即:


  1. if "%%a"=="%%g" (if "%%d"=="%%o" goto ok)else ( goto error)

  2. )
  3. )
  4. )
  5. )

  6. :error
  7. mkdir erorrrrrrrrr
  8. pause

  9. :ok
  10. mkdir OKKKKKKKKKKK
  11. pause
復制代碼


or


  1. :error
  2. mkdir erorrrrrrrrr
  3. pause

  4. :ok
  5. mkdir OKKKKKKKKKKK
  6. pause

  7. if "%%a"=="%%g" (if "%%d"=="%%o" goto ok)else ( goto error)

  8. )
  9. )
  10. )
  11. )
復制代碼


論壇徽章:
0
3 [報告]
發(fā)表于 2012-11-21 17:48 |只看該作者
回復 2# lenovonew



謝謝這位大神,這么耐心加細心,連md5都寫上了!

恍然大悟~


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP