請問各位高手們,最近因工作關係,想用bat寫比對資料夾容量的編輯檔,但是用過fc和comp這兩個參數都無法達成我需要的,作業系統是XP的,請問各位大大有什麼方法嗎?
例:要比對資料夾A和B,其中資料夾B多了一個檔案,那麼資料夾B容量勢必會比A來的多,我需要下什麼參數來比對呢?只需比對資料夾容量,不用管多了什麼東西唷!
議MO wrote:
我試了之後也是可以的,但是目前正在想要怎麼比對兩者差異,若不同則顯示錯誤訊息不然就是執行下個動作...
用 IF
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
NOT 表示 Windows XP 應該只有在條件為偽時才執行命令。
ERRORLEVEL number 當上一個執行的程式傳回的結束碼大於或等於指定數字時,則條件為真。
string1==string2 當指定的文字字串相符合時,則條件為真。
EXIST filename 如果指定的檔名存在時,則條件為真。
command 指定當條件為真時所要執行的命令。
命令之後可以接著 ELSE 命令。當指定條件為偽時,緊接在 ELSE 命令之後的命令將會被執行。
如果您啟用擴充命令,IF 的變更如下:
IF [/I] string1 compare-op string2 命令
IF CMDEXTVERSION 數字命令
IF DEFINED 變數命令
compare-op 可以是:
EQU - 等於
NEQ - 不等於
LSS - 小於
LEQ - 小於或等於
GTR - 大於
GEQ - 大於或等於
☆ 私人訊息直接刪除不再回覆 ☆ 願望 : bovuhPPjMnEfkyhggnsJdABaLFPuhXT4
REM 定義來源與目的資料匣
REM (把 d:\fiderA 與 d:\fiderB 改成你的來源與目的目錄)
set fd_a=d:\filderA
set fd_b=d:\filderB
if not exist "d:\temp" (md d:\temp)
dir/-c %fd_a% | find "個檔案" > d:\temp\size.txt
for /f "usebackq tokens=3 delims= " %%i in (d:\temp\size.txt) do set a_size=%%i
dir/-c %fd_b% | find "個檔案" > d:\temp\size.txt
for /f "usebackq tokens=3 delims= " %%i in (d:\temp\size.txt) do set b_size=%%i
echo 來源 容量:%a_size%
echo 目的 容量:%b_size%
if %a_size%==%b_size% (goto sub1) else (goto sub2)
:sub1
echo 來源與目的相符
REM 這裡放 "相同" 時要執行的指令
goto end
:sub2
echo 來源與目的不相符
REM 這裡放 "不相同" 時要執行的指令
goto end
:end
del /f /q d:\temp\size.txt
關閉廣告