我可以在过滤批处理文件(cmd)中的某些格式时显示目录中的文件吗?
Posted
技术标签:
【中文标题】我可以在过滤批处理文件(cmd)中的某些格式时显示目录中的文件吗?【英文标题】:Can I show files in a directory while filtering certain formats in a batch file (cmd) [closed] 【发布时间】:2021-02-25 18:48:51 【问题描述】:这是一个非常简单的问题。我想在批处理文件中显示某个目录中的所有文件。我已经写了一些代码:
dir /b /a-d
但这所做的就是给我这种类型的输出。 (示例)
file1.txt
video.mp4
jams.mp3
有没有办法可以过滤掉纯批处理代码中的“.mp3”文件?
【问题讨论】:
只过滤.mp3
文件将不再显示目录中的所有文件,除非那里只有.mp3
文件!如果您想知道如何使用dir
命令,请打开命令提示符窗口,键入dir /?
,按[ENTER]
键,然后阅读使用信息。您的问题不在主题范围内,因为您显然在发布之前没有尝试进行基础研究。此外,请注意,由于 8.3 命名,使用诸如 *.mp3
之类的 glob 也可能会显示其他文件。
@Compo 我知道*.mp3
有效。但我想知道如何过滤out某些格式,而不是只显示一种格式。
打开命令提示符窗口,键入findstr /?
,按[ENTER]
键,然后阅读使用信息。此外,我们在网站每个页面的顶部都有一个搜索工具,请使用它。
【参考方案1】:
根据我的评论,您可以使用 Dir
和 findstr.exe
。
例如:
Dir /B/A-D | %SystemRoot%\System32\findstr.exe /EILV ".mp3"
你也可以使用powershell.exe
:
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile Get-ChildItem -Exclude "*.mp3" -File -Name -Force
根据您所需的布局和用途,您还可以使用:
forfiles.exe
:
%SystemRoot%\System32\forfiles.exe /C "%SystemRoot%\System32\cmd.exe /C If @IsDir==FALSE If /I Not @Ext==\"mp3\" Echo @File"
甚至Robocopy.exe
:
%SystemRoot%\System32\Robocopy.exe . Null /L /NC /NDL /NJH /NJS /NS /XF "*.mp3"
【讨论】:
【参考方案2】:这可以通过 DIR 和 FIND.EXE 来完成。使用命令FIND /?
了解 /I 和 /V 的作用。
DIR /B /A:-D | FIND /I /V ".mp3"
如果您想使用现代工具,您可以使用 PowerShell 来完成,即使是从纯批处理文件脚本运行它。
powershell -NoLogo -NoProfile -Command ^
"(Get-ChildItem -File | Where-Object @('.mp3') -notcontains $_.Extension ).Name"
【讨论】:
以上是关于我可以在过滤批处理文件(cmd)中的某些格式时显示目录中的文件吗?的主要内容,如果未能解决你的问题,请参考以下文章