Войти

Показать полную графическую версию : Сравнение содержимого 2х текстовых файлов, с выводом отчета


bionicmon
23-11-2015, 17:02
Добрый день! Имеются два текстовых файла с перечисленными именами файлов (из одного каталога), необходимо из этих файлов вытянуть разницу, т.е. какие файлы были добавлены, какие были удалены.
Пробую вытянуть таким образом fc /n result.txt result1.txt > otchet.txt
Получаю кракозяблы (не знаю как перекодировать именно текст на выходе в отчете) + ко всему добавляются другие файлы, которые не были добавлены/удалены (выделил черным)
‘а*ў*Ґ*ЁҐ д*©«®ў result.txt Ё RESULT1.TXT
***** result.txt
9: otchet-21.11.2015-13.17 - Є®ЇЁп.log
10: pict.bmp
***** RESULT1.TXT
9: otchet-21.11.2015-13.17 - Є®ЇЁп.log
10: otchet-21.11.2015-13.17.log
11: otchet-21.11.2015-13.19.log
12: otchet-21.11.2015-13.24.log
13: otchet-22.11.2015-12.40.log
14: otchet-22.11.2015-12.41.log
15: otchet-22.11.2015-12.45.log
16: otchet-22.11.2015-12.46.log
17: otchet-22.11.2015-12.47.log
18: otchet-22.11.2015-12.48.log
19: otchet-22.11.2015-12.56.log
20: otchet-22.11.2015-13.03.log
21: otchet-22.11.2015-16.50.log
22: otchet-22.11.2015-19.40.log
23: otchet-22.11.2015-19.42.log
24: otchet-22.11.2015-19.54.log
25: otchet-22.11.2015-22.25.log
26: pict.bmp
*****

***** result.txt
11: result.txt
12: run - Є®ЇЁп.bat
***** RESULT1.TXT
27: result.txt
28: result1.txt
29: run - Є®ЇЁп.bat
*****



Попробовал сделать через findstr /l /x /v /g:result.txt result1.txt >otchet.txt, но он выводит мне результат только при добавлении новых файлов в каталог, когда файлы оттуда удаляются, отчет получается пустым.

Как сделать четкий результирующий отчет, который бы позволял следить за изменением файлов в данной папке за определенный период (неделя, месяц, год)?

Помогите пожалуйста.

Foreigner
23-11-2015, 17:36
но он выводит мне результат только при добавлении новых файлов в каталог, когда файлы оттуда удаляются, отчет получается пустым. »
Добавьте findstr наоборот:

@echo off
1>nul chcp 1251

1>отчет.txt (

echo Новые файлы:
findstr /v /g:1.txt 2.txt
echo.
echo Удаленные файлы:
findstr /v /g:2.txt 1.txt

)

bionicmon
23-11-2015, 18:08
Добавьте findstr наоборот: »
Подскажите как это скрестить со скриптом по выводу имен файлов в текстовый файл? (извиняюсь, 2й день за скриптами...)
Скрипт @echo off
mode con codepage select=1251 > nul
if not exist result.txt (dir /p /b /a:-d /t:w > result.txt) else (dir /p /b /a:-d /t:w > result1.txt)
if exist result.txt if exist result1.txt (findstr /l /x /v /g:result.txt result1.txt >otchet.txt )
if exist result.txt if exist result1.txt ( del result.txt)
if exist result1.txt (ren result1.txt result.txt)

Foreigner
23-11-2015, 18:16
Как-то так, если не запутался:

@echo off
1>nul chcp 1251

if not exist new.txt (1>new.txt dir /b /a-d)
if not exist old.txt (ren new.txt old.txt & goto:eof)

1>result.txt (

echo Новые файлы:
findstr /v /g:old.txt new.txt
echo.
echo Удаленные файлы:
findstr /v /g:new.txt old.txt

)
move new.txt old.txt




© OSzone.net 2001-2012