文件与文件之间的比较,甚至是文件夹与文件夹之间的比较,可使用如下的方法进行对比。
①如果你想比较两个文件,可以使用系统自带的命令行程序fc.exe,另外UltraEdit等编辑器也具有比较文件的功能;
②如果你是想比较两个文件夹,Win98安装光盘提供了windiff.exe,可以在窗口方式下比较两个文件夹的内容;WinXP增强工具集中则提供了命令行方式的bindiff.exe;而第三方工具TotalCmd等资源浏览器也提供文件夹比较的功能;
③如果限定使用批处理解决问题,可以参考我过去编写的一个小程序,在WinXP CMD下运行通过。
下面的批处理比较文件的代码,为了程序的运行效率考虑,对同名的不同文件没有进行内容上的比较,而只是比较了文件的属性、大小和修改日期,这当然是不全面的,但应该可以满足日常的需要。
--------------------------------------------------------------
@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"