Batch下比較檔案,試了很多方法:
  1. 1.比較檔案日期(但取不到日期)
  2. 2.比較檔案size(但指令看起來比較複雜)
  3. 3.FC.EXE =>比較兩個檔案或兩組檔案並且顯示其中的不同之處。
        (是系統指令,XP,win2000都存在c:\windows\system32\下)

 

因為實際上我們每天需放排程自動比較的檔案是RAR,且差不多7MB以上。

多方考量下採用FC.exe,不知道是否有更好的方法?

 

不過用FC的話,要了解ERRORLEVEL的差別:

ERRORLEVEL=2 =>表示兩個檔案中,有一個以上是不存在

ERRORLEVEL=1 =>表示比較結果為『不同』。

ERRORLEVEL=0 =>表示比較結果為『相同』。

 

註:windows2000底下(FC.EXE跟XP的版本不一樣)發現,
若 FC  c:\test.rar c:\temp\test.rar 不加>nul ,cpu會飆到100,
很恐怖,就看畫面上一直跑一直顯示差異的內容,不知道是不是BUG,看了網路上的範例都是>nul,果然加了>nul就好了,ERRORLEVEL顯示也是正確。

>nul 就是 把原本該指令要顯示在畫面上的內容,轉到空的device,也就是不顯示的意思。

測試範例:


@echo off
fc c:\test.rar c:\temp\test.rar > nul
if errorlevel 2 goto err2
if errorlevel 1 goto err1
if errorlevel 0 goto err0
goto exit
:err0
echo. is same
goto exit
:err1
echo. is different
goto exit
:err2
echo. file is lost
goto exit
:exit
arrow
arrow
    全站熱搜

    味味A 發表在 痞客邦 留言(0) 人氣()