命令列出与特定名称匹配的文件夹中包含的所有文件和文件大小?

时间:2016-11-02 17:31:18

标签: cmd directory command-prompt

我想打印位于任何符合“alpha”的文件夹中的文件的所有文件名和大小。

我理解dir /s将以递归方式打印整个目录和子目录的所有文件名和大小,但不知道如何编写命令只显示与特定字符串匹配的文件夹内容(在我的情况下) alpha )在其文件路径中。

例如,如果这是我的目录:

C:\Users\raigovind93\Documents\1\alpha\doc1.txt
C:\Users\raigovind93\Documents\2\1\1\alpha\doc2.pptx
C:\Users\raigovind93\Documents\2\1\1\alpha\apple\doc3.xslx

我想打印:

doc1.txt 20020 bytes
doc2.pptx 102002 bytes
doc3.xslx 289 bytes

为了清楚起见,如果你能同时显示文件夹和文件名的答案(以验证命令的正确性)和没有文件夹的答案,那将是非常有用的!

3 个答案:

答案 0 :(得分:0)

尝试使用

dir /s |find /I "\alpha\"

您可以使用' find'在其他命令上使用管道。

答案 1 :(得分:0)

命令行上的

for /r %a in (*) do @echo %a %~za bytes|find /i "\alpha\"

用于批处理文件,将百分号加倍:

for /r %%a in (*) do @echo %%a %%~za bytes|find /i "\alpha\"

请参阅for /?了解详情。

答案 2 :(得分:0)

使用dir /B /S /A:-D以递归方式(/A:-D)递归返回当前工作目录中的所有文件(/S),然后管道({{ 1}})将结果导入/B以过滤其路径中包含|的项不区分大小写(find /I "\alpha\");然后通过\alpha\循环解析其输出:

/I

要在退回的项目中包含完整路径,请将for /F替换为for /F "eol=| delims=" %F in ('dir /B /S /A:-D ^| find /I "\alpha\"') do echo %~nxF %~zF bytes

请记住将%~nxF符号加倍,以便在批处理文件中使用此命令行。