我想编写一个Windows批处理脚本,该脚本以递归方式列出目录中的所有扩展名。
所需的行为是这样的: 在目录“ a”中启动bat文件,该文件包含以下文件:b.txt,c.png,d.txt,e.jpeg,f.jpg。
该脚本应输出以下内容: 文本文件 png jpeg jpg
我希望每个扩展名都换行,不需要按字母顺序排序。
答案 0 :(得分:2)
您链接到的方法可能对您想要的内容过于矫kill。
执行for /r
循环以递归方式获取所有文件,并设置一个与扩展名相同的变量(该值并不重要,我们只需要定义该变量)
然后执行for /f
循环以列出变量(使用set .
-它们都方便地以点开头,因为%%~x
修饰符获取点的扩展名(.txt
) )。然后,如果需要,只需按字母顺序对其进行排序:
@echo off & setlocal
for /r %%a in (*) do set "%%~xa=X" 2>nul
for /f "delims==" %%a in ('set .') do echo %%a
(编辑:删除了sort
,因为set .
已经按字母顺序排序-谢谢@LotPings的提示)