如何获得文件之间的差异

时间:2016-01-08 04:14:03

标签: batch-file

每天都会自动创建一个名为articles.txt的文档。

我必须对文档进行一些更改。 更改完成后,文档名为articles_Final + date.txt 例如:articles_Final_2016_01_07.txt

然后将文档移动到目录"。 \ HISTO \ FINAL"。

我必须比较最后创建的两个文档,并在新文档result.txt

中写下差异

我告诉你我的代码找到最后两个文件

@echo off & cls
SETLOCAL EnableDelayedExpansion

set "Dossier=.\HISTO\Final"
set /a "n=0, limit=2"

for /F "delims=" %%a in ('dir /B /A-D /O-D /T:W "%Dossier%\*.*"') do (
   echo "%%a"
   2>nul set /a "n+=1, 1/(limit-n)"||goto :break
)
:break
pause
exit

和le代码比较这两个文件 在这里,我写了他们的名字,但我想找到自动编写我的第一个代码的结果的方法

findstr /v /g:articles_Final_2016_01_04.txt  articles_Final_2016_02_04.txt  >result.txt

2 个答案:

答案 0 :(得分:1)

@echo off
cls
SETLOCAL EnableDelayedExpansion

set "Dossier=.\HISTO\Final"
set /a "n=0, limit=2"

for /F "delims=" %%a in ('dir /B /A-D /O-D /T:W "%Dossier%\*.*"') do (
   echo "%%a"

   set "file[!n!]=%%a"

   2>nul set /a "n+=1, 1/(limit-n)"||goto :break
)
:break

set file

echo findstr /v /g:%Dossier%\%file[0]% %Dossier%\%file[1]% 

pause
exit

(未试过)

findstr命令只是echo - 您需要检查它并重定向输出。

set file命令只是显示以file开头的所有变量的一种方式。

答案 1 :(得分:0)

这里是最终的解决方案

@echo off
cls
SETLOCAL EnableDelayedExpansion

set "Dossier=.\HISTO\FINAL"
set /a "n=0, limit=2"

for /F "delims=" %%a in ('dir /B /A-D /O-D /T:W "%Dossier%\*.*"') do (
   echo "%%a"

   set "file[!n!]=%%a"

   2>nul set /a "n+=1, 1/(limit-n)"||goto :break
)
:break

set file
    findstr /v /g:%Dossier%\%file[0]% %Dossier%\%file[1]% >>difference.txt
    ::fc /L %Dossier%\%file[0]% %Dossier%\%file[1]% >>difference.txt

pause
exit