jmsdhn 發表於 2023-2-8 09:23

請教一個IF數字比對的問題

本帖最後由 jmsdhn 於 2023-2-8 14:21 編輯

打擾了!以下是內容
set/p AAA=
if %AAA$ LSS 2 ( echo YYY ) else ( echo NNN )

但輸入必須是00~09
也就是前面須補滿0
結果發現
00~07都顯示他們該有的結果
但08~09都顯示YYY
怎回事!?

之後發現兩種解法:
1)08~09只能輸入8或9
但這不實際(個人有特殊用途)
2)把指令中的 LSS 2 改成 LSS 02
一切才正常

不懂!
是字元順序還是字元串數量的問題?
感謝解惑!

maodou 發表於 2023-2-8 12:25

本帖最後由 maodou 於 2023-2-8 12:37 編輯

@ECHO OFF
SET /P AAA=
SET /A AAA = 100000%AAA% %% 100000
IF %AAA% LSS 2 (ECHO YYY) ELSE (ECHO NNN)

jmsdhn 發表於 2023-2-8 14:20

感謝回應
原來是要取餘數
有點淨化的概念

個人把那兩個10000各自少0或加0
都可以得到8或9的正確結果
AAA太長會溢出就是

不過個人還是很好奇
為何個人寫的那指令(寫成LSS 2)的情況下
若輸入08或09
為何會一定輸出YYY
而輸入02~07卻可以輸出NNN
好詭異
難道和它的二進制有關
總之感謝教學{:9_277:}

maodou 發表於 2023-2-8 15:20

jmsdhn 發表於 2023-2-8 14:20
若輸入08或09
為何會一定輸出YYY
而輸入02~07卻可以輸出NNN
(推測的)
在Batch檔裡面, 前面補零的數字會視為八進位


頁: [1]
查看完整版本: 請教一個IF數字比對的問題