㈠ 請問怎樣用BAT(批處理)編寫兩個文件夾內容進行比較
1、如果你是想比較兩個文件,可以使用系統自帶的命令行程序fc.exe,另外UltraEdit等編輯器也具有比較文件的功能;
2、如果你是想比較兩個文件夾,Win98安裝光碟提供了windiff.exe,可以在窗口方式下比較兩個文件夾的內容;WinXP增強工具集中則提供了命令行方式的bindiff.exe;而第三方工具TotalCmd等資源瀏覽器也提供文件夾比較的功能;
3、如果限定使用批處理解決問題,可以參考我過去編寫的一個小程序,在
WinXP CMD下運行通過。需要提及的是,為了程序的運行效率考慮,對同名的不同文件沒有進行內容上的比較,而只是比較了文件的屬性、大小和修改日期,這當然是不全面的,但應該可以滿足日常的需要。
--------------------------------------------------------------
:: CompDir.cmd - Compare files in two directories.
:: Will Sort - 19:40 2005-12-23 - CMD@WinXP
@echo off & setlocal EnableDelayedExpansion
if not "%2"=="" goto Start
:Help
echo CompDir.cmd - Compare files in two directories.
echo Usage: %0 [/f] dir1 dir2 [FileSpec]
echo
/f
Compare time/size/attrib of file
echo
filespec Specific files by wildcard of filename
goto :EOF
:Start
if /i "%1"=="/f" shift && set _CompFile=on
if "%3"=="" (set filespec=*.*) else set filespec=%3
for /r %~f1 %%f in (%filespec%) do (
set file=%%~ff
set file=!file:%~f1\\=!
if not exist "%~f2\\!file!" echo.Only in 1: !file!
)
for /r %~f2 %%f in (%filespec%) do (
set file=%%~ff
set file=!file:%~f2\\=!
if not exist "%~f1\\!file!" echo Only in 2: !file!
)
if not "%_CompFile%"=="on" goto :EOF
echo Compare Time/siZe/Attrib of file...
echo Press Ctrl+C to Quit
for /r %~f1 %%f in (%filespec%) do (
set file=%%~ff
set file=!file:%~f1\\=!
if exist "%~f2\\!file!" for %%g in ("%~f2\\!file!") do (
if "%%~tf" NEQ "%%~tg" echo !file! Time 1"%%~zf" NEQ 2"%%~zg">>"%temp%\\_CompFile.tmp"
if "%%~zf" NEQ "%%~zg" echo !file! Size 1"%%~zf" NEQ 2"%%~zg">>"%temp%\\_CompFile.tmp"
if "%%~af" NEQ "%%~ag" echo !file! Attrib 1"%%~zf" NEQ 2"%%~zg">>"%temp%\\_CompFile.tmp"
)
)
if exist "%temp%\\_CompFile.tmp" del "%temp%\\_CompFile.tmp"
--------------------------------------------------------------