中国文字的图片资料:请问怎样用BAT(批处理)编写两个文件夹内容进行比较

来源:百度文库 编辑:高考问答 时间:2024/04/20 07:48:00
我想在DOS下编写一段BAT(批处理)程序,用与对两个盘符下的文件内容是否一样,如果一样则反回:成功,如果不一样则反回失败,如果能显示出哪些不一样,或者把不一样的文件夹(文件)名称写到一个.txt文本中去?

非常感谢您的回来

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"
--------------------------------------------------------------

点击文件名,鼠标右键--〉编辑就可以了。

如果没有编辑就选择--〉重命名,更改为*.txt

然后用记事本打开编辑就可以了。

再把文件名改成*.bat.

也可以直接用记事本打开这个*。bat文件进行编辑。