Сравнить строки в двух текстовых файлах - PullRequest
0 голосов
/ 27 сентября 2019

Я проверял везде, и я не могу найти нужный мне ресурс.

Все, что я нашел до сих пор, сравнивает только весь файл, но это не то, что я ищу.

Я видел такие инструменты, как «Сравнение файлов» для cmd, чтобы помочь, но как это делает сравнение не удовлетворяет потребности.

FC [filepath1] [filepath2]

Есть ли способ для меня, чтобы сделать это.

Возьмите первую строку текстового файла и сравните ее с каждой строкой 2-го файла и выведите соответствующий файл, создав новый текстовый файл с именем файла, и заполните его> Имя файла(первый текстовый файл)> Весь соответствующий файл (из 2-го файла).Затем он возвращается ко 2-й строке первого текстового файла и сравнивает ее с каждой строкой 2-го файла и создает другой текстовый файл, выполняющий те же действия, пока первый файл не станет пустым.

Я получил все файлы в текстовом файле, выполнив следующую команду.

Get-ChildItem -Path D:\Documents\Projects\audio -Recurse | Select-Object @{n='File'; e={$_.Name + "," + $_.LastWriteTime}} | Out-File "D:\Documents\Projects\audio\Log.txt"
Get-ChildItem -Path D:\Documents\Projects\video -Recurse | Select-Object @{n='File'; e={$_.Name + "," + $_.LastWriteTime}} | Out-File "D:\Documents\Projects\Video\Log.txt"

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

некоторые видео содержат около 2 аудио, другие около 8, и все они имеют одинаковые имена.Я уже ищу способ вырезать последние 3 символа из имени файла.

имя написано так:

somefilm_v1.mxf

somefilm_a1.mxf

somefilm_a2.mxf

somefilm_a3.mxf

v1 относится к видео 1, а a1 относится к аудио 1. FileName_ одинаково, только 2 символа a * / v1 отличаются.так что я исследую способ не проверять последние 2/3 символа имени файла.возможно, придется увеличить его до 5, если он также проверяет формат файла.

Если это можно сделать и с пакетным заданием, прежде чем произойдет сравнение, было бы также неплохо.

Я ищу, если это возможно, в пакетном режиме, если возможно, пожалуйста.

1 Ответ

0 голосов
/ 28 сентября 2019

Вы хотите перебрать содержимое файла.Лучше всего сделать это цикл for /f.Но вам даже не нужен файл.Просто зациклите все файлы *_v1.mxf.Затем разделите название фильма и добавьте все <MovieName_a*> имена файлов:

@echo off
setlocal enabledelayedexpansion

for %%a in (*_v1.*) do (
  set "all="%%a""
  for /f "delims=_" %%b in ("%%~na") do (
    for %%c in ("%%b_*a*") do set all=!all! "%%c"
  )
  echo !all!
)

Если по какой-либо причине вам действительно нужно зациклить файл, замените первый цикл for %%a на for /f "delims=" %%a in (file.txt) do (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...