Windows 10:如何列出没有同名但扩展名不同的文件的文件?

Windows 10:如何列出没有同名但扩展名不同的文件的文件?

我有一个音乐库,里面大部分都是 mp3 文件。我使用 Minilyrics 为每个 mp3 下载 .lrc 文件,因此大多数 mp3 文件在同一个文件夹中都有一个对应的歌词文件,文件名相同但扩展名为 .lrc。

现在我需要列出mp3 文件没有歌词。有没有办法在 PowerShell 或命令行中执行此操作?

答案1

.mp3下面的 PowerShell 将列出任何文件的完整路径名.lrc在同一目录中没有具有相同基本文件名的任何匹配文件

只需将 更改$pth =为文件所在的起始文件夹的完整路径即可.mp3。此解决方案还将递归遍历文件夹以查找任何子文件夹中的$pth所有文件。.mp3

电源外壳

$pth = "C:\MP3\Folder\Location";
Get-ChildItem -Path $pth -Recurse -Include "*.mp3" | % { Process { 
    If ( ! ( Test-Path "$((Split-Path $_.FullName -Resolve))\$($_.BaseName).lrc" ) ) 
    { $_.FullName };
    }};

支持资源

答案2

如果您的计算机上安装了 Python,您可以将此代码粘贴到名为的文件中songlister.py,并将其放在与所有.mp3.lrc文件相同的文件夹中,然后从命令行运行它,如下所示:

python songlister.py

它会列出所有没有文件的歌曲名称.lrc

代码如下:

import glob,re

# These give the lists of all the .mp3 and .lrc files in your current folder and sub folders
mp3_files = glob.glob("/**/*.mp3", recursive=True)
lyric_files = glob.glob("/**/*.lrc", recursive=True)

# For every .mp3 file, check if it has a matching .lrc file.
for i in mp3_files:
    music_name = re.search(".*\.mp3$", i).group().replace('.mp3', '')
    match = False
    for s in lyric_files:
        lyric_name = re.search(".*\.lrc$", s).group().replace('.lrc', '')

# If it does NOT have a .lrc file, then list the name of the file.
        if lyric_name == music_name: 
            match = True
            break
    if not match:
        print(i)

答案3

以下是我将使用的低技术方法。在命令提示符下,执行dir /b|sort > list.txt。这将生成文件 list.txt 中的文件列表,按字母顺序排列。

然后在 Excel 或 Google 表格中打开该文件。文件名列表将显示在 A 列中。在单元格 B1 中输入=RIGHT(A1,LEN(A1)-FIND(".",A1)),然后将其复制到整个 B 列(或者更确切地说,只要文件名存在);具体来说,在单元格 B1 上按Ctrl-C,然后选择整个列,然后按Ctrl-V。这将在 B 列上生成扩展名列表。然后,在单元格 C1 中输入=IF(B1=B2,A1,""),然后再次复制整个列。现在在 C 列上,您没有 lrc 文件的文件列表(正确地说,这还会显示一个有 lrc 但没有 mp3 文件的文件)。

相关内容