Board logo

标题: [求助]文本对比的新问题 [打印本页]

作者: w1314ich     时间: 2007-12-30 14:42    标题: [求助]文本对比的新问题

文本1内容:
a
ab
abc
abcd
文本2内容:
a
abr
abc
abcd
abcde


使用批处理对比两个文本内容后输出的结果为:
abr
结果中不包含文本2中的abcde,这是文本2中比1多的内容,为什么不能显示出来呢
作者: greenworld     时间: 2007-12-30 14:58
LZ,这个问题不好回答吧?你用了什么命令才产生这种结果的呢?问题的关键在于你用的命令本身而不是比较的文本文件本身,怎么不发你用的命令内容出来而发文本文件的内容出来呢?
作者: HAT     时间: 2007-12-30 17:18
把你的代码贴出来看看
作者: ZJHJ     时间: 2007-12-30 18:14
我批处理水平不好,写得有点烦琐。希望高手精简!不过是成品哦!

@echo off
@title      文件内容变化检出程序 wang in 070810yc QQ251485609
:cxsr
@echo.
@echo.
@echo                         这是文件内容变化对比检出程序
@echo.
@echo                  它将自动检出在原始文件上被改动或增加的行内容
@echo.            
@echo.
SET /P gwjm=     请将原始文件拉入本窗口:
if exist  %gwjm%  goto  zx
@goto  cxsr
:zx
@echo 原始文件>原始.txt
more  %gwjm%>>原始.txt
:cx2
SET /P xwj=      请将内容有变化的新文件拉入本窗口:
if exist  %xwj%  goto  zx2
@goto  cx2
:zx2
@echo 新文件>新有.txt
more  %xwj%>>新有.txt
@echo     检出有变化或新增加的文件如下:   (开始运行: %date%   %time%)>检出结果.txt
copy  原始.txt + 新有.txt  en1.txt
del 原始.txt
del 新有.txt
cls
@echo.
@echo                程序正在运行,请稍候... ...
@echo.
cd.>a.txt
for /f "delims=" %%i in (en1.txt) do >>a.txt echo ★★%%i
del en1.txt
cd.>t.txt
for /f "delims=" %%i in (a.txt) do (
  if not defined %%i set %%i=A & echo %%i>>t.txt
)
del a.txt
findstr /n /i /r /c:"\<新文件\>"  t.txt>w.txt
FOR /F %%i in (w.txt) do set m=%%i
cd.>1.txt
more +%m:~0,-6% t.txt>>1.txt
setlocal ENABLEDELAYEDEXPANSION
cd.>1j.txt
FOR /F "delims=" %%i in (1.txt) do (
SET wei=%%i
SET wei=!wei:★★= !
ECHO !wei!>>1j.txt
)
del 1.txt
del t.txt
del w.txt
cls
cd.>2j.txt
findstr  /i  /v  "\<新文件\>"  1j.txt>>2j.txt
cd.>1j.txt
findstr  /i  /v  "\<关闭状态\>"  2j.txt>>1j.txt
@echo.>>检出结果.txt
findstr  /i  /v  "\<字节\>"  1j.txt>>检出结果.txt
@echo.>>检出结果.txt
@echo                                操作运行结束时间:   %time%>>检出结果.txt
del 1j.txt
del 2j.txt
cls
call 检出结果.txt
作者: qq43142691     时间: 2007-12-30 18:53
@echo off
cd.>相同.txt
cd.>不同.txt
for /f "delims=" %%a in ('dir /a-d /b "文件夹A路径"') do (
    dir /a-d /b "文件夹B路径"|find "%%a" >>相同.txt || echo %%a>>不同.txt
)
for /f "delims=" %%i in (不同.txt) do (del /q /s iscsi206\%%i)