CMD/BAT - [решено] сравнить строки в текстовых файлах

Ответить
 • Просмотры: 1
Аватара пользователя
Konstantinkn

CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение Konstantinkn »

Прошу, помогите написать 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
Аватара пользователя
Iska

Re: CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение Iska »

Konstantinkn, тогда уж тупо пользовать какой-нибудь WinMerge:



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile01=%~1
set sSourceFile02=%~2
if not defined sSourceFile01 (
	echo Usage: "%~nx0" ^ ^
	exit /b 1
) else (
	if not defined sSourceFile02 (
		echo Usage: "%~nx0" ^ ^
		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

Изображение
Аватара пользователя
greg zakharov

Re: CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение greg zakharov »

Elven, представьте, вы идёте по дороге, перед вами куча дерьма. Что изменится, если вы назовете оную экскрементами? Ничего.

С технической точки зрения всё, что не обрабатывается анализатором\интерпретатором\компилятором есть ни что иное как комментарий, поэтому приведённый вами пример является таковым.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение Iska »

sov44, мне не «в лом», как предположил коллега greg zakharov. Но что там расписывать? Код прост, как пробка. Никаких конкретных вопросов по коду задано не было.
Аватара пользователя
Konstantinkn

Re: CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение Konstantinkn »

Цитата Iska:



Konstantinkn, к сожалению, пакетные файлы поддерживают ограниченное комментирование. Но Вы можете спросить, ежели что-то непонятно конкретное.
CMD/BAT - [решено] сравнить строки в текстовых файлах




Ясно. Спасибо, Iska.



А как сделать, чтобы в дополнение к Вашему решению происходило так:



3. Если все строки совпадают, bat-файл создаёт текстовый файл report.txt, и в нём написано: различий нет.

4. Если какие-либо строки различаются, bat-файл создаёт текстовый файл report.txt, и в нём написано: есть следующие различия: у файла file2.mp4 отличаются следующие строки: и список строк из файла file2.mp4, которые отличаются от строк файла file1.mp4
Аватара пользователя
Konstantinkn

Re: CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение Konstantinkn »

Konstantinkn, к сожалению, пакетные файлы поддерживают ограниченное комментирование. Но Вы можете спросить, ежели что-то непонятно конкретное.
Аватара пользователя
Konstantinkn

Re: CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение Konstantinkn »

Цитата Iska:



к сожалению, пакетные файлы поддерживают ограниченное комментирование



Konstantinkn, Iska лукавит, ему просто влом расписывать написанное.



Код:

Код: Выделить всё

@echo off
  setlocal
    rem традиционный комментарий
    set "var=переменная" % rem это послестрочный комментарий
    goto:end_comment
       а это многострочный комментарий
       ограниченный инструкцией goto и меткой end_comment
    :end_comment
  endlocal
exit /b
внеблочные комментарии могут быть размещены в любом месте
после инструкции exit /b основного блока
Аватара пользователя
Iska

Re: CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение Iska »

Konstantinkn, сделать можно. Но не вижу практического смысла.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение Iska »

Цитата Iska:



к сожалению, пакетные файлы поддерживают ограниченное комментирование



Konstantinkn, Iska лукавит, ему просто влом расписывать написанное.



Код:

Код: Выделить всё

@echo off
  setlocal
    rem традиционный комментарий
    set "var=переменная" % rem это послестрочный комментарий
    goto:end_comment
       а это многострочный комментарий
       ограниченный инструкцией goto и меткой end_comment
    :end_comment
  endlocal
exit /b
внеблочные комментарии могут быть размещены в любом месте
после инструкции exit /b основного блока
Аватара пользователя
Iska

Re: CMD/BAT - [решено] сравнить строки в текстовых файлах

Сообщение Iska »

greg zakharov, флаг в руки, коллега, флаг в руки Изображение. Но лукавите Вы, именуя комментариями то, что ими не является. И Вы сие знаете.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»