我需要一个包含许多子文件夹的目录中所有文件类型的列表。在命令行中执行此操作的简单方法?
我尝试使用以下变体创建批处理文件脚本:
@echo off & setlocal
for %%I in (*.*) do (
set /a ext[%%~xI] += 1
)
set ext[
上面的脚本成功返回当前目录下的文件扩展名。但我无法修改此脚本以返回所有子文件夹中的文件扩展名。
一种方法是使用
dir
并捕获完整的文件列表,然后对结果使用 for
循环:
@echo off
setlocal
dir /S /A-D /B /L /W *.* > %TEMP%\files.txt
for /F %%I in (%TEMP%\files.txt) do (
set /a ext[%%~xI] += 1
)
del %TEMP%\files.txt
set ext[
在这种情况下,我告诉
dir
忽略目录,使用小写输出,并将列表减少为仅文件名(而不是摘要)。
for /f "delims=" %%I in ('dir /s /b /a-d *.* ') do (
dir
子命令使用/s
(带子目录)/b
(基本列表 - 仅名称,无页眉/页脚)/a-d
(无目录名称)并以 d:\path\filename.ext
形式提供名称列表。
for /f
处理内存中的列表,将每一行依次传递给%%I
。 "delims="
关闭默认标记化。
请参阅提示中的“for /?”,或查看数千个有关文档的示例。