比较两个文本文件中的字符串



我一直在检查每个地方,但我似乎找不到我需要的资源。

到目前为止,我找到的所有内容仅比较整个文件,但这不是我想要的。

我已经看到了诸如"文件比较"之类的工具,用于cmd,但是它如何进行比较并不能满足需求。

FC [filepath1] [filepath2]

我有没有办法做到这一点。

获取文本文件的第一行并将其与第二个文件的每一行进行比较,并通过创建一个具有文件名的新文本文件来输出匹配的文件,并填充>文件名(第一个文本文件(>所有匹配的文件(来自第二个文件(。然后它返回到第一个文本文件的第二行,并将其与第二个文件上的每一行进行比较,并创建另一个文本文件执行相同的操作,直到第一个文件变为空。

我在文本文件中获取所有文件的方法是运行以下命令。

Get-ChildItem -Path D:DocumentsProjectsaudio -Recurse | Select-Object @{n='File'; e={$_.Name + "," + $_.LastWriteTime}} | Out-File "D:DocumentsProjectsaudioLog.txt"
Get-ChildItem -Path D:DocumentsProjectsvideo -Recurse | Select-Object @{n='File'; e={$_.Name + "," + $_.LastWriteTime}} | Out-File "D:DocumentsProjectsVideoLog.txt"

我将比较第一个文本文档中视频文件的名称,以及第二个文本文件中音频文件的每个名称。

有些视频大约有 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。

如果在比较发生之前也可以通过批处理完成此操作,那也很棒。

如果可能的话,我正在寻找批量完成的。

你想要遍历文件的内容。最好这样做是一个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 (

相关内容

  • 没有找到相关文章

最新更新