我有一个文件夹,里面有多个包含记录的文件。
我想要一个 Windows 批处理脚本,它将把所有“文件名”连同所有文件中存在的记录数一起复制到一个输出文件中。
答案1
find /v /c "" *.* > result.txt
怎么运行的
/v
反转搜索(因此当我们不搜索任何内容时,我们会找到所有行)/c
计数匹配""
不匹配任何内容*.*
搜索所有文件> result.txt
重定向输出
限制
- 假设 Windows 行尾分隔符正常
\r\n
- 尽管 FIND 可用于扫描大文件,但它不会检测到单行上超过 1070 个字符的任何字符串(没有回车符
\r
),这使得它在搜索二进制或 XML 文件类型时用途有限。
为了删除多余的-空行,我们可以将上述命令包装成for
如下结构:
for /f "usebackq tokens=2-3" %a in (`find /v /c "" *.*`) do echo %a %b >> result.txt
答案2
非常感谢您的回复。除了我最初的要求之外,场景是每天在特定位置创建一个文件夹(YYYYMMDD 格式)。此文件夹包含一些有/无记录的文件。
由于这是每日操作,我将每天使用这个批处理文件。每当我在特定日期执行此批处理文件时,它都会检查将在该特定日期创建的文件夹,然后给出一个包含文件名和记录数的输出文件
有没有什么办法可以达到这个要求呢?
答案3
仅查看文件名列表:
dir * /b /s > files.txt