微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

batch file,用于统计目录中每个文件夹中的文件数量,并将结果输出到文本文件

我想要做的是做一个batch file,将recursion进入每个文件夹,并计算每个文件夹中的文件数量。 然而,我花了最后一个小时尝试各种事情,它不工作。

我想要输出如下所示:X:Y其中X是文件名称,Y是X中文件数量

setlocal EnableDelayedExpansion set current=blank FOR /D %%G in ("*") DO set current=%%G && call:count :count set count=0 for %%A in (*) do set /a count+=1 echo !current!:!count!>>"D:UserSomeDirectorycount.txt"

但是这不起作用。 输出给每个文件夹相同的编号。 输出的数字是目录本身的文件数量,我认为这是问题。

具体来说,如果我在C:UserExample并且它有三个文件夹,A,B和C,我想要C:UserExampleA等中的文件数量,但它给了我C:UserExample的文件数。 希望是有道理的。

文件一个目录复制并粘贴到当前工作目录中

一个batch file里面,我怎么知道一个进程是否正在运行?

批量转到失去错误级别

批处理 – 如果ELSE启动函数的条件执行,无论

Plink通过Windowsbatch file处理特定的错误

注意:在我的使用情况下,文件夹将不包含子目录。

使用Windows批处理脚本保护FTP

将SAS Enterprise Guide解压缩到Unix Server可运行批次?

/ ChainingPackage做什么?

如何将BAT文件中的命令发送到Windows中正在运行的NodeJS进程?

在所有窗口顶部的蝙蝠文件

一个不同的方法

@echo off FOR /D %%G in ("*") DO ( PUSHD "%%G" FOR /F "delims=" %%H in ('dir /ad /b * ^|find /C /V ""') DO echo %%G %%H>>"..count.txt" POPD )

这工作:

注意,你必须整理set current=%%G&& call:count或current值是"A " (尾随空间,不是你想要的)当你扫描子目录时,你必须在当前目录的前缀*

@echo off del count.txt setlocal EnableDelayedExpansion set current=blank FOR /D %%G in ("*") DO set current=%%G&& call:count goto end :count set count=0 for %%A in (!current!*) do set /a count+=1 echo !current!:!count!>>"count.txt" :end

这个问题的答案看起来像是一组不同的方法来做同样的事情! 这是另外一个

@echo off setlocal EnableDelayedExpansion for /F "tokens=1,2 delims=" %%a in ('findstr /M /S "^" *.*') do ( if "%%b" neq "" ( set "name=%%a" set /A "count[!name: =_!]+=1" ) ) (for /F "tokens=2,3 delims=[]=" %%a in ('set count[') do ( set "name=%%a" echo !name:_= !:%%b )) > count.txt

这种方法看起来很复杂,因为文件名称中的空格管理。 如果文件夹没有空格,则可以删除6行(和延迟扩展)。 那是:

@echo off setlocal for /F "tokens=1,2 delims=" %%a in ('findstr /M /S "^" *.*') do ( if "%%b" neq "" set /A "count[%%a]+=1" ) (for /F "tokens=2,3 delims=[]=" %%a in ('set count[') do echo %%a:%%b) > count.txt

这是一个PowerShell脚本来处理它:

Get-ChildItem -Path . -Recurse -ErrorAction SilentlyContinue -Force | Where-Object { $_.Attributes -eq "Directory"} | ForEach-Object {Write-Host $_.Name,$_.GetFiles().Count }

打印到屏幕上,但写入文件很简单。

扫描一路下来。 如果您只想要第一层文件夹,请删除“-Recurse”

好处是你正在对真实对象做真正的动作,而不是试图通过解析文本来欺骗操作系统去做它并不是真正意图的东西。

在这里,即使你对PowerShell知之甚少(从这个路径下得到一个子目录,这是目录,并且为它们每个打印它的名字,在其中的文件数。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐