
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"
--------------------------------------------------------------
不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,A和B文件夹需设为共享文件夹
<# :cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 对比两台电脑里的两个文件夹,找出相同名称的文件,将一个文件夹里的同名文件替换掉另一个文件夹的同名文件
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "current=%cd%"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo%#% +%$%%$%/%_% %z%
pause
exit
#>
$folder1="\\A电脑IP\A文件夹"
$folder2="\\B电脑IP\B文件夹"
$b=[Convert]::FromBase64String("IC0tPiA=")
$c=[Text.Encoding]::Default.GetString($b)
$dic=New-Object 'System.Collections.Generic.Dictionary[string, object]'
$files1=@(dir -literal $folder1|?{$_ -is [System.IO.FileInfo]})
for($i=0$i -lt $files1.count$i++){
$key=$files1[$i].Name.ToLower()
if(-not $dic.ContainsKey($key)){
$arr=New-Object -TypeName System.Collections.ArrayList
[void]$dic.add($key, $arr)
}
[void]$dic[$key].add($files1[$i])
}
$files2=@(dir -literal $folder2|?{$_ -is [System.IO.FileInfo]})
for($i=0$i -lt $files2.count$i++){
$key=$files2[$i].Name.ToLower()
if($dic.ContainsKey($key)){
$dic[$key][0].FullName+$c+$files2[$i].FullName
}
}
首先,假定这两个文本文件的名字分别是000.TXT和111.TXT,把批处理文件命名为ABC.bat,并存放在同一文件夹中。然后在WINDOWS的窗口中双击这个批处理文件就可以执行。下面是批处理文件的内容:@echo offfc 000.txt 111.txt >nulif errorlevel 1 (echo 两个文件不同!按任意键退出…… pause exit)echo 现在可以继续执行其它命令了......
rem 具体的各项命令pause
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)