Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как сравнить разницу в двух текстовых документах и вывести разницу в новый текстовый

Ответить
Настройки темы
CMD/BAT - Как сравнить разницу в двух текстовых документах и вывести разницу в новый текстовый

Новый участник


Сообщения: 31
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Делаю я операции с картинками, jpg , мониторю папку где лежат картинки , добавляю пути и названия всех файлов в log.txt и уже дальше спокойно обрабатываю
но папку с картинками часто невольно засирает да и старые картинки по необходимости остаются ,
собственно вопрос: как добавить в log.txt только те картинки которых небыло ранее?

Как я это вижу:
делаем 2 лог файла, log.txt и newlog.txt
log.txt - все что было записано ранее
в newlog.txt добавляется все что есть в папке на данный момент, затем сравнивается с log.txt , всю разницу записывает в result.txt

такое возможно? Как это сделать подскажите?

p.s. к примеру вот такое содержимое log.txt
Цитата:
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\setting_back.png
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\shuffle_down.png
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\shuffle_over.png
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\shuffle_up.png
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\tile16.png
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\tile_bezel.png
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\tile_drop_shadow.png
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\timer_down.png
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\timer_over.png
c:\Program Files\Windows Sidebar\Gadgets\PicturePuzzle.Gadget\Images\timer_up.png
c:\Program Files\Windows Sidebar\Gadgets\RSSFeeds.Gadget\drag.png
c:\Program Files\Windows Sidebar\Gadgets\RSSFeeds.Gadget\icon.png
c:\Program Files\Windows Sidebar\Gadgets\RSSFeeds.Gadget\images\buttonDown_Off.png
c:\Program Files\Windows Sidebar\Gadgets\RSSFeeds.Gadget\images\buttonDown_On.png
c:\Program Files\Windows Sidebar\Gadgets\RSSFeeds.Gadget\images\buttonUp_Off.png
c:\Program Files\Windows Sidebar\Gadgets\RSSFeeds.Gadget\images\buttonUp_On.png
c:\Program Files\Windows Sidebar\Gadgets\RSSFeeds.Gadget\images\flyoutBack.png

Отправлено: 16:19, 31-10-2019

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6704
Благодарности: 1574

Профиль | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
(compare (gc D:\temp\log.txt) (gc D:\temp\newlog.txt)).inputobject |Out-File D:\temp\result.txt
Вопрос только в том, всегда ли в newlog.txt будет больше строк, чем в log.txt, потому что в примере выше будет записываться любая разница между файлами.

Если нужно, чтобы добавлялись только те, которые есть в newlog.txt, но нет в log.txt, но не наоборот, тогда так:
Код: Выделить весь код
((compare (gc D:\temp\log.txt) (gc D:\temp\newlog.txt)).where{$_.SideIndicator -eq '=>'}).inputobject |Out-File D:\temp\result.txt

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 31-10-2019 в 16:38.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:29, 31-10-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


точно, надо просто обновлять log.txt , выходит удаляем log.txt , а newlog.txt переименовываем в log.txt , выходит у нас будет всегда "большой" файл для сравнения с малым
или я не то понял? Или может оптимизировать можно как то?

Отправлено: 16:38, 31-10-2019 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6704
Благодарности: 1574

Профиль | Отправить PM | Цитировать


В первом варианте запишется любая разница, любые строки, уникальные для обоих файлов.
Во втором примере запишутся только уникальные строки, которые содержатся в newlog.txt.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:43, 31-10-2019 | #4


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


что то не работает сам батник, что я делаю не так?
создал cmd.bat ,
поместил в него
Код: Выделить весь код
@echo off
((compare (gc D:\temp\log.txt) (gc D:\temp\newlog.txt)).where{$_.SideIndicator -eq '=>'}).inputobject |Out-File D:\temp\result.txt
pause
но окно не запускается даже (или настолько быстро что не видно) , все файлы созданы по указанному пути , log и newlog наполнил небольшим содержимым для теста

Отправлено: 16:46, 31-10-2019 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6704
Благодарности: 1574

Профиль | Отправить PM | Цитировать


надо создать cmd.ps1 и запускать его по правой кнопке мышки -> выполнить в Powershell.
@echo off надо убрать

Или сделать такой "батник":
Код: Выделить весь код
powershell -noprofile -command "((compare (gc D:\temp\log.txt) (gc D:\temp\newlog.txt)).where{$_.SideIndicator -eq '=>'}).inputobject |Out-File D:\temp\result.txt"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:52, 31-10-2019 | #6


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


понял , все фунциклирует , дальше разберусь сам , спасибо!

Отправлено: 17:05, 31-10-2019 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как сравнить разницу в двух текстовых документах и вывести разницу в новый текстовый

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Купил ещё одну планку оперативной памяти .Как почувствовать узреть разницу ? imyafamiliya Microsoft Windows 7 15 22-01-2017 19:42
[решено] Подскажите разницу!!! str1945 Выбор отдельных компонентов компьютера и конфигурации в целом 9 30-10-2013 17:24
[решено] Объясните разницу. systeman Процесcоры 9 04-11-2009 19:10
Обьясните разницу DYURIK Программирование и базы данных 4 17-09-2004 10:26
Кто-нибудь объясните разницу Guest Общий по Linux 11 12-04-2004 19:25




 
Переход