比较文件内容-用于比较MAC地址
dos吧
全部回复
仅看楼主
level 5
edit98 楼主

来源于“dos命令大全”www.daohei.com“dos之家”
文件a.txt里的内容如下:
192.168.2.1:00-E0-4C-F7-0C-E5
192.168.2.2:00-E0-4C-F7-0C-E3
192.168.2.3:00-E0-4C-F7-05-E4
192.168.2.4:00-E0-4C-F6-A8-BB
192.168.2.5:00-E0-4C-F7-05-E5
192.168.2.6:00-E0-4C-F5-E3-A1
192.168.2.7:00-E0-4C-F6-CD-06
192.168.2.8:00-E0-4C-F7-0C-F3
192.168.2.9:00-E0-4C-F5-E2-FD
文件b.txt里的内容如下:
192.168.2.1:00-E0-4C-F7-0C-E5
192.168.2.2:00-00-4C-F7-0C-E3
192.168.2.3:00-E0-4C-F7-05-E4
192.168.2.4:00-E0-4C-F6-A8-BB
192.168.2.5:00-E0-4C-F7-05-E5
192.168.2.6:00-E0-4C-F5-E3-A1
192.168.2.7:00-E0-4C-F6-CD-06
192.168.2.8:00-E0-4C-F7-0C-F3
192.168.2.9:00-E0-4C-F5-E2-FD
效果,如文件b.txt中的IP:192.168.2.2: 与文件a.txt中的IP:192.168.2.2: 这一行相比,如发现在后面的MAC地址改变则>>1.txt   请问批处理怎么做呀
它的项目,比如:192.168.2.1,192.168.2.3等不需要检查吗?
@echo off
if exist 1.txt del 1.txt
for /f "delims=: tokens=1*" %%a in (a.txt) do (
   for /f "delims=" %%_ in ('findstr "%%a" b.txt') do (
                 if NOT "%%a:%%b"=="%%_" >>1.txt echo %%_
         )
)
start 1.txt
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%i in (a.txt) do set "%%i=%%j"
echo ============================
echo 文档a.txt和b.txt中的mac改动的有:
echo.
for /f "tokens=1,2 delims=:" %%i in (b.txt) do (
   if /i not "!%%i!"=="%%j" (
       echo %%i %%j
       if "%%i"=="192.168.2.2" set flag=1
   )
)
echo -----------------------------
echo 其中:
if defined flag (echo 192.168.2.2 之 mac已经改动。) else 192.168.2.2 之mac未改动。
echo ==============================
pause>nul
其它的项目,比如:192.168.2.1,192.168.2.3等不需要检查吗?
要呀,要不然,那样就好做喽,``要检查的是几百向MAC呀``
@echo off
rem ip的顺序可以打乱
setlocal ENABLEDELAYEDEXPANSION
set t1=!time!
set /a num=1
for /f "tokens=1,2 delims=:" %%i in (b.txt) do (
set ip!num!=%%i
set mac!num!=%%j
set /a num+=1
)
for /f "tokens=1,2 delims=:" %%i in (a.txt) do (
for /L %%a in (1,1,!num!) do (
if "!ip%%a!"=="%%i" (
if not "!mac%%a!"=="%%j" echo !ip%%a!:!mac%%a! vs %%i:%%j
)
)
)
echo 比较行数:%num%
echo 开始时间:%t1%
echo 结束时间:!time!
if defined flag (echo 192.168.2.2 之 mac已经改动。) else 192.168.2.2 之mac未改动。
如果192.168.2.3改变了呢?你的代码输出什么?
要么都做要么就不要画蛇添足。。不要加这个直接echo %%i %j就好了。
fc a.txt b.txt命令试过么?

2011年04月07日 11点04分 1
1