|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] сравнить строки в текстовых файлах |
|
|
CMD/BAT - [решено] сравнить строки в текстовых файлах
|
Новый участник Сообщения: 46 |
Профиль | Отправить PM | Цитировать Прошу, помогите написать bat-файл. Хочу сравнить строки в текстовых файлах.
Что есть? Папка. В ней два файла MP4: file1.mp4, file2.mp4. Цель - выяснить, совпадают ли у этих MP4 значения всех параметров, или есть различия? Параметры и значения, например, следующие: codec_name=h264 has_b_frames=1 pix_fmt=yuv420p Инструмент для получения сведений о файлах - ffprobe. https://ffmpeg.org/ffprobe.html ffprobe работает из командной строки. Синтаксис ffprobe, например, следующий: ffprobe -v 32 -print_format default -show_format -show_streams -hide_banner file1.mp4 Хочу, чтобы в bat-файле был следующий алгоритм. 1. bat-файл запускает ffprobe по каждому из двух файлов. bat-файл по каждому из двух файлов в папке создаёт текстовый файл и выводит в него информацию о параметрах и значениях. Одна строка - одна пара параметр-значение. Название текстового файла совпадает с названием MP4, отличается расширение: file1.txt, file2.txt 2. bat-файл сравнивает каждую строку. 3. Если все строки совпадают, bat-файл создаёт текстовый файл report.txt, и в нём написано: различий нет. 4. Если какие-либо строки различаются, bat-файл создаёт текстовый файл report.txt, и в нём написано: есть следующие различия: у файла file2.mp4 отличаются следующие строки: и список строк из файла file2.mp4, которые отличаются от строк файла file1.mp4 |
|
Отправлено: 17:34, 24-10-2020 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Konstantinkn, тогда уж тупо пользовать какой-нибудь WinMerge:
Скрытый текст
@echo off setlocal enableextensions enabledelayedexpansion set sSourceFile01=%~1 set sSourceFile02=%~2 if not defined sSourceFile01 ( echo Usage: "%~nx0" ^<Source file 1^> ^<Source file 2^> exit /b 1 ) else ( if not defined sSourceFile02 ( echo Usage: "%~nx0" ^<Source file 1^> ^<Source file 2^> exit /b 1 ) else ( if not exist "%sSourceFile01%" ( echo Not found source file [%sSourceFile01%]. exit /b 2 ) else ( if not exist "%sSourceFile02%" ( echo Not found source file [%sSourceFile02%]. exit /b 2 ) ) ) ) set sPath2FFProbe=%ProgramFiles%\FFmpeg\bin\ffprobe.exe set sFFProbeParameters=-v 32 -print_format default -show_format -show_streams -hide_banner set sPath2WinMerge=%ProgramFiles(x86)%\WinMerge\WinMergeU.exe set sLeftFile=%Temp%\LeftFile.txt set sRightFile=%Temp%\RightFile.txt >"%sLeftFile%" "%sPath2FFProbe%" %sFFProbeParameters% "%sSourceFile01%" >"%sRightFile%" "%sPath2FFProbe%" %sFFProbeParameters% "%sSourceFile02%" "%sPath2WinMerge%" /e /u /wl /wr /maximize "%sLeftFile%" "%sRightFile%" >nul del /f /q "%sLeftFile%" "%sRightFile%" endlocal exit /b 0 |
Отправлено: 20:08, 24-10-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Iska, спасибо. Взял в изучение.
Iska, прошу, напишите в коде комментарии. |
Отправлено: 11:41, 25-10-2020 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Konstantinkn, к сожалению, пакетные файлы поддерживают ограниченное комментирование. Но Вы можете спросить, ежели что-то непонятно конкретное.
|
Отправлено: 15:45, 25-10-2020 | #4 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Цитата Iska:
А как сделать, чтобы в дополнение к Вашему решению происходило так: 3. Если все строки совпадают, bat-файл создаёт текстовый файл report.txt, и в нём написано: различий нет. 4. Если какие-либо строки различаются, bat-файл создаёт текстовый файл report.txt, и в нём написано: есть следующие различия: у файла file2.mp4 отличаются следующие строки: и список строк из файла file2.mp4, которые отличаются от строк файла file1.mp4 |
||
Отправлено: 17:47, 25-10-2020 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Konstantinkn, сделать можно. Но не вижу практического смысла.
|
Отправлено: 22:24, 25-10-2020 | #6 |
Забанен Сообщения: 793
|
Цитата Iska:
@echo off setlocal rem традиционный комментарий set "var=переменная" % rem это послестрочный комментарий goto:end_comment а это многострочный комментарий ограниченный инструкцией goto и меткой end_comment :end_comment endlocal exit /b внеблочные комментарии могут быть размещены в любом месте после инструкции exit /b основного блока |
|
Отправлено: 22:42, 25-10-2020 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать greg zakharov, флаг в руки, коллега, флаг в руки . Но лукавите Вы, именуя комментариями то, что ими не является. И Вы сие знаете.
|
Отправлено: 23:46, 25-10-2020 | #8 |
Забанен Сообщения: 793
|
Iska, что именно не является комментарием? Всё приведенное - комментарии, только похоже вы об этом не знали. Жаль, жаль...
|
Отправлено: 07:46, 26-10-2020 | #9 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать greg zakharov, rem или :: предназначены как раз для комментирования, здесь не спорю, а вот насчет других способова - соглашусь с Iska. Это как с холодным оружием: "Является холодным оружием" и "Может быть использовано в качестве холодного оружия" - разные вещи. Так же и тут, обычные строки могут быть использованы в качестве комментария будучи вырезаны из выполнения посредством безусловного перехода или отделены посредством eixt /b, но сами по себе они не являются комментариями. в противном случае нижеприведенный фрагмент тоже можно считать комментарием:
|
Отправлено: 08:50, 26-10-2020 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Удаление всех пробельных символов в текстовых файлах. | serg515 | Скриптовые языки администрирования Windows | 24 | 24-10-2020 16:02 | |
[решено] Пакетная замена значений в текстовых файлах | Alexandr-Pessimist | AutoIt | 4 | 29-09-2018 22:30 | |
CMD/BAT - Удалить определенные строки в текстовых файлах | Seryoga204 | Скриптовые языки администрирования Windows | 0 | 05-08-2012 14:53 | |
[решено] Как сравнить два текстовых файла и выявить изменения | assch | AutoIt | 1 | 09-09-2010 23:25 | |
Сортировщик строк в текстовых файлах. | borison | Программное обеспечение Windows | 2 | 04-02-2007 10:22 |
|