列出目录和子目录中所有文件扩展名的命令

问题描述 投票:0回答:2

我需要一个包含许多子文件夹的目录中所有文件类型的列表。在命令行中执行此操作的简单方法?

我尝试使用以下变体创建批处理文件脚本:

@echo off & setlocal

for %%I in (*.*) do (
    set /a ext[%%~xI] += 1
)

set ext[

上面的脚本成功返回当前目录下的文件扩展名。但我无法修改此脚本以返回所有子文件夹中的文件扩展名。

windows batch-file command-line
2个回答
0
投票

一种方法是使用

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
忽略目录,使用小写输出,并将列表减少为仅文件名(而不是摘要)。


0
投票
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 /?”,或查看数千个有关文档的示例。

© www.soinside.com 2019 - 2024. All rights reserved.