如何递归地只列出视频文件类型并排除一些文件夹?在Windows7中

如何递归地只列出视频文件类型并排除一些文件夹?在Windows7中,windows,cmd,directory,Windows,Cmd,Directory,我有很多内置HDD,视频文件散布在各处 我想能够列出所有的视频文件*.avi*.mp4*.wmv。。。在目录和子目录中,同时也从列表中排除一些文件夹,并将结果输出到文件 我试过使用: 目录D:\Mini Clips Series*.avi*.mp4*.wmv/b/s/a-D>>E:\Temp\List.txt 及其变体。主要问题是指定几种文件类型似乎与/s开关不兼容 非常感谢。您考虑过使用Grep吗?它有各种Windows二进制文件,您可以将过滤从“dir”卸载到grep dir "folder

我有很多内置HDD,视频文件散布在各处

我想能够列出所有的视频文件*.avi*.mp4*.wmv。。。在目录和子目录中,同时也从列表中排除一些文件夹,并将结果输出到文件

我试过使用:

目录D:\Mini Clips Series*.avi*.mp4*.wmv/b/s/a-D>>E:\Temp\List.txt

及其变体。主要问题是指定几种文件类型似乎与/s开关不兼容


非常感谢。

您考虑过使用Grep吗?它有各种Windows二进制文件,您可以将过滤从“dir”卸载到grep

dir "folder" /S | grep "regex" > list.txt
您可以使用带有/R recurse开关的for循环,将扩展作为一个集合传递

for /R "D:\Mini Clips Series" %i in (*.avi *.mp4 *.wav) do dir /b %i >> "E:\Temp\List.txt"
/R开关也会递归子文件夹,因此您不需要dir命令上的/s,如您所见。我没有为/a-d费心,但您应该仍然能够使用它

如果存在一个现有的E:\Temp\List.txt文件,您将首先删除它,因为上面将附加到不覆盖该文件的>>重定向而不是>。如果您不想这样做,您可以使用此选项:

del "E:\Temp\List.txt" & for /R "D:\Mini Clips Series" %i in (*.avi *.mp4 *.wav) do dir /b %i >> "E:\Temp\List.txt"
&允许两个命令位于同一命令行上。首先完成del,然后是for循环


通过在命令提示符下键入for/可以了解有关for命令的更多信息。

经过几次尝试,终于找到了一个在Win7下工作的批处理脚本

@ECHO OFF
SET test="D:\Mini Clips Series"
FOR /R %test% %%F IN (*.avi *.mp4 *.wmv) DO (
ECHO %%F >> List.txt)
它以递归方式/s输出所有相应的文件名,其完整路径类似于dir/b/a-d


再次感谢您的回复。

非常感谢您的快速回复。有一个小问题我还没能解决。它生成一个1字符,以防止管道传输到List.txt文件。生成的命令类似于dir/b D:\Mini Clips Series\Cat\u door.mp4 1>>D:\List.txt。导致错误消息:系统找不到指定的文件。@Spip:我在我的机器上测试了两个命令行,没有任何问题。之后我也检查了文本文件,它很好,包含了正确的文件。在我的测试中唯一不同的是两个文件夹名。您是否直接从我的答案中复制/粘贴了代码?是的,我直接复制/粘贴了第一个命令,并且在批处理文件中使用了一个细微的变化,用于/R D:\Mini Clips Series%%I in*.avi*.mp4*.wmv do dir/b/a-D%%I>>D:\List.txt。两者都是在>>@Spip:square之前生成的奇怪的1字符。您使用的是什么Windows版本?我根据WinVer.exe在Windows 10版本1909上进行了测试,但在这两个版本上我都没有看到。@Spip Win7已经被MS终止,所以我没有任何东西试图用它来进一步帮助我。对不起-