iT邦幫忙

0

DOS指令IF,未傳回正確結果

大家好:

小弟想用指令找出大於4GB的OUTLOOK郵件檔(.PST),因此使用FORFILES指令如圖1,但發覺未傳回正確結果(圖2,OUTLOOK.PST)。

個人猜想:4000,000,000已超出IF判斷數值的上限值?

請先進指教,謝謝。
http://ithelp.ithome.com.tw/upload/images/20161116/20087656MdqXrnFmy6.jpg
http://ithelp.ithome.com.tw/upload/images/20161116/200876566UZK384o4g.jpg

liwaylai iT邦新手 3 級 ‧ 2016-11-16 17:22:59 檢舉
CMD 運算是 32 位元有符號(正負)運算,
所以不能超過 2147483647,

<參考來源>http://m.mobile01.com/topicdetail.php?f=300&t=2916480&p=3

2 個回答

0
海綿寶寶
iT邦超人 1 級 ‧ 2016-11-16 17:21:10
最佳解答

最大的數字是2147483646

看更多先前的回應...收起先前的回應...
liwaylai iT邦新手 3 級 ‧ 2016-11-16 17:24:32 檢舉

海綿寶寶,為達目的,請教解法? 謝謝。

加個 A 試試看

D:\share>forfiles /P %userprofile% /S /M *.pst /c "cmd /c if A@fsize GTR A4000000000 echo @path @fsize"

不行的話
我也不會了

liwaylai iT邦新手 3 級 ‧ 2016-11-17 09:46:32 檢舉

測試了,傳回值錯誤。 仍謝謝你幫忙。

/images/emoticon/emoticon20.gif

蟹老闆 iT邦大師 1 級 ‧ 2016-11-17 11:51:00 檢舉

參考海綿寶寶給的連結可以決解這個問題
辨法:
格式化取得的檔案大小如12345將格式改成 000000000012345
取得最後10位數
基準值:4000000000
這樣才可以比對,否則4000000000會小於987654321
這個比對不是數字的比對所以需要這麼做

蟹老闆 iT邦大師 1 級 ‧ 2016-11-17 11:52:21 檢舉

....
這個版本的編輯器真的有夠難用,不夠直覺ENTER不是換行....

謝謝蟹老闆補充
and
我現在都是先寫完(用ENTER換列)
在送出前去每一列最後面加兩個空白
/images/emoticon/emoticon13.gif

蟹老闆 iT邦大師 1 級 ‧ 2016-11-17 17:17:39 檢舉

前二行記得加空白,之後就忘了/images/emoticon/emoticon03.gif/images/emoticon/emoticon03.gif

咦?
這個最佳解答應該是蟹老闆的才對

蟹老闆 iT邦大師 1 級 ‧ 2016-11-18 10:43:25 檢舉

咦?
我們不是一家人嗎 /images/emoticon/emoticon47.gif

WilliamHuang
iT邦研究生 1 級 ‧ 2016-11-16 14:26:11
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答