python windows命令行 批处理 统计算指定后缀,格式的文件

结合gpt,按照自己的思路,做了个记录

1.python版本

import os


def counfiles(directory, extension):
    count = 0
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(extension):
                print("current file is:", file)
                count += 1
    return count


html_file_count = counfiles(".", ".html")
print("html_file_count : ", html_file_count)

 

2、windows命令

dir /b /s /a-d | find /C /I “.txt” 含义

 

这条命令是Windows命令提示符(CMD)中的一条命令组合,用于统计指定目录及其所有子目录中,包含特定文件扩展名(在这个例子中是`.txt`)的文件总数。下面是对这条命令各部分含义的分解:

- `dir`:这是一个命令,用于列出指定目录的内容,包括文件和子目录。

- `/b`:这是一个开关,表示以“简洁”(bare)形式列出,即每个文件或目录名占一行,不包含其他详细信息,如大小、日期等。

- `/s`:这个开关告诉`dir`命令递归地搜索指定目录下的所有子目录。

- `/a-d`:这个参数组合用于过滤结果,`/a`后面可以跟多个属性标识符,这里跟的是`-d`,表示排除目录(directories),只显示文件(files)。

接下来是一个管道符号 `|`,它将前一个命令的输出作为后一个命令的输入。

- `find`:这是另一个命令,用于在输入流中查找指定的文本字符串。

- `/C`:`find`命令的开关,表示统计匹配项的数量,而不是列出每一项匹配。

- `/I`:这个开关表示搜索时不区分大小写。

- `“.txt”`:这是要查找的文本字符串,在这个上下文中,它代表以`.txt`为扩展名的文件名。

综上所述,整条命令的含义是:列出指定目录及其所有子目录中所有的`.txt`文件(不包括目录),并统计这些文件的总数。

 

为什么 /s是表示递归的意思,

在命令行工具中,如Windows的CMD命令或Unix/Linux的shell命令中,`/s`(在Unix/Linux中对应的是`-r`或`-R`)作为一个选项,通常被用来指示命令应当递归地作用于指定目录及其所有子目录。这个选项的设计初衷是为了方便用户一次性处理层次结构中的多个层级,而无需手动逐层执行命令。

以Windows的`dir`命令为例,当你加上`/s`选项时,命令不再是仅仅查看指定目录下的内容,而是会深入到该目录下的每一个子目录,对每个子目录也执行相同的操作,然后再进入更下一级的子目录,以此类推,直到遍历完所有层级。这样做的好处是,如果你想要获取整个目录树的信息,或者批量处理(如查找、修改、删除)整个目录结构中的文件时,只需一条命令就能完成,大大提高了效率。

在计算机术语中,“递归”一词来源于数学,指的是一个过程或函数在其定义中直接或间接地调用自身的一种方法。在文件系统操作的上下文中,使用“递归”意味着命令会自我重复应用到目录树的每一层级,直到达到最底层的文件为止。因此,`/s`作为一个递归选项,形象地体现了这一概念。

3、批处理

windows命令行的命令,是不是可以写成bat文件

@echo off
dir /b /s /a-d *.txt > file_list.txt

 

posted @ 2024-06-22 21:20  hjswlqd  阅读(13)  评论(0编辑  收藏  举报