【问题标题】:Command to List all files and filesizes contained in folders that match a specific name?命令列出与特定名称匹配的文件夹中包含的所有文件和文件大小?
【发布时间】:2017-03-16 03:12:47
【问题描述】:

我想打印位于与“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

为了清楚起见,如果您可以同时显示一个显示文件夹和文件名的答案(以验证命令的正确性)和一个没有文件夹的答案,那将非常有帮助!

【问题讨论】:

    标签: cmd directory command-prompt


    【解决方案1】:

    尝试使用

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

    您也可以在其他命令中使用带有管道的“查找”。

    【讨论】:

    • 嗨吉姆,我试过这个命令..它似乎到达了 alpha 文件夹,但没有打印 alpha 文件夹内的内容。
    • 搜索字符串应为\alpha\ ,因为alpha 也会错误地匹配alphabet 之类的目录;此外,将/I 开关添加到find 以便不区分大小写地处理文件名,这也是Windows 处理文件路径/名称的原生方式...
    【解决方案2】:

    在命令行上:

    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 /?

    【讨论】:

    • Stephan 您将在命令的哪个位置指定文件路径?我正在使用映射驱动器,所以我从不在目录本身中。
    • 另外,当我执行命令时,我收到了一堆blah is not recognized as an internal or external command(其中 blah 似乎是文件名的第一个单词)错误消息,所以似乎有问题命令。
    • 起始路径使用for /r "y:\server path\" %a in (*) do ...for /r "\\123.123.123.123\server path\" %a in (*) do ...。无法重现您的错误消息。
    【解决方案3】:

    使用dir /B /S /A:-D将当前工作目录中的所有文件(/A:-D)递归返回(/S)作为裸列表(/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 替换为%~fF

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

    【讨论】:

    • 这非常接近!我也需要他们的文件大小(部分问题)!
    猜你喜欢
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2021-07-29
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多