我一直在检查每个地方,但我似乎找不到我需要的资源。
到目前为止,我找到的所有内容仅比较整个文件,但这不是我想要的。
我已经看到了诸如"文件比较"之类的工具,用于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 (