Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在筛选批处理文件(cmd)中的某些格式时,是否可以显示目录中的文件_Batch File_Cmd_Directory - Fatal编程技术网

Batch file 在筛选批处理文件(cmd)中的某些格式时,是否可以显示目录中的文件

Batch file 在筛选批处理文件(cmd)中的某些格式时,是否可以显示目录中的文件,batch-file,cmd,directory,Batch File,Cmd,Directory,这里有一个非常简单的问题。我想在批处理文件中显示某个目录中的所有文件。我已经编写了一些代码: dir /b /a-d 但所有这些都给了我这种类型的输出。 (示例) 有没有办法在纯批处理代码中过滤掉“.mp3”文件?这可以通过DIR和FIND.EXE完成。阅读有关/I和/V如何使用命令FIND/? DIR /B /A:-D | FIND /I /V ".mp3" 如果您想使用现代工具,可以使用PowerShell,即使是从纯批处理文件脚本运行它 powershell -N

这里有一个非常简单的问题。我想在批处理文件中显示某个目录中的所有文件。我已经编写了一些代码:

dir /b /a-d 
但所有这些都给了我这种类型的输出。 (示例)


有没有办法在纯批处理代码中过滤掉“.mp3”文件?

这可以通过DIR和FIND.EXE完成。阅读有关/I和/V如何使用命令
FIND/?

DIR /B /A:-D | FIND /I /V ".mp3"
如果您想使用现代工具,可以使用PowerShell,即使是从纯批处理文件脚本运行它

powershell -NoLogo -NoProfile -Command ^
    "(Get-ChildItem -File | Where-Object { @('.mp3') -notcontains $_.Extension }).Name"

根据我的评论,您可以使用,
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
%SystemRoot%\System32\forfiles.exe /C "%SystemRoot%\System32\cmd.exe /C If @IsDir==FALSE If /I Not @Ext==\"mp3\" Echo @File"
%SystemRoot%\System32\Robocopy.exe . Null /L /NC /NDL /NJH /NJS /NS /XF "*.mp3"
根据您所需的布局和用途,您还可以使用:

forfiles.exe

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile Get-ChildItem -Exclude "*.mp3" -File -Name -Force
%SystemRoot%\System32\forfiles.exe /C "%SystemRoot%\System32\cmd.exe /C If @IsDir==FALSE If /I Not @Ext==\"mp3\" Echo @File"
%SystemRoot%\System32\Robocopy.exe . Null /L /NC /NDL /NJH /NJS /NS /XF "*.mp3"
甚至
Robocopy.exe

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile Get-ChildItem -Exclude "*.mp3" -File -Name -Force
%SystemRoot%\System32\forfiles.exe /C "%SystemRoot%\System32\cmd.exe /C If @IsDir==FALSE If /I Not @Ext==\"mp3\" Echo @File"
%SystemRoot%\System32\Robocopy.exe . Null /L /NC /NDL /NJH /NJS /NS /XF "*.mp3"

仅过滤
.mp3
文件将不再显示目录中的所有文件,除非目录中只有
.mp3
文件!如果您想知道如何使用
dir
命令,请打开命令提示窗口,键入
dir/?
,按
[ENTER]
键,然后阅读使用信息。你的问题离题了,因为你在发帖前显然没有尝试进行基础研究。此外,请注意,由于8.3命名,使用glob(如
*.mp3
)可能也会显示其他文件。@Compo我知道
*.mp3
可以工作。但我想知道如何过滤某些格式,而不是只显示一种格式。打开命令提示窗口,键入
findstr/?
,按
[ENTER]
键,然后阅读使用信息。此外,我们在网站的每个页面顶部都有一个搜索工具,请使用它。