如何用批处理统计指定文件的数量

具体要求:当前目录下有很多文件夹,如acd文件夹下有1.jpg 2.jpg 20.jpg 100.jpg ax.jpg 111.txt
ade文件夹下有1.jpg 10.jpg 88.jpg aaa.jpg
等等。。。
但我只要统计纯数字99以内的jpg数量。
如何用批处理生成
acd文件夹 3张
ade文件夹 2张
。。。

悬尝不多,但已经是我全部家当了。

第1个回答  2012-08-07
@echo off&setlocal EnableDelayedExpansion
set x=0
for /f "delims=" %%f in ('dir /b /s ??.jpg') do (set /a n=%%~nf*1
if !n!==%%~nf set /a x+=1)
echo 纯数字99以内的jpg数量:%x% 个
echo.&pause本回答被网友采纳
第2个回答  推荐于2016-10-07
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/ad/b') do (
set x=
for /f "tokens=*" %%j in ('dir/b "%%i\*.jpg"') do (
set /a n=%%~nj
if !n! gtr 0 if !n! lss 100 set /a x+=1)
echo %%i文件夹 !x!张)
pause追问

你的回答太精彩了,膜拜.

还有一个问题想问下,如果你回答不了可以不用回答.

假设当前目录下有多个文件夹,每个文件夹中又有多个子文件夹,子文件夹中可能还有子文件夹,我想获取每个文件夹里面有1.jpg-99.jpg之内为1个。如下图,图中除了addd文件夹下没有符合其它都符合,

我想要的结果是:

abc目录下共有4个文件夹下有符合照片,共有符合照片8张。

ad目录下共有1个文件夹下有符合照片,共有符合照片3张。

追答

就加一个/s就可以了

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/ad/b') do (
set x=
for /f "tokens=*" %%j in ('dir/b/s "%%i\*.jpg"') do (
set /a n=%%~nj
if !n! gtr 0 if !n! lss 100 set /a x+=1)
echo %%i文件夹 !x!张)
pause

追问

这个我知道,我的意思要统计出符合文件夹的个数。而且这文件夹不是最上层的。

本回答被提问者采纳
第3个回答  2016-02-12
Option Explicit
'添加事件
Private WithEvents cmd As CommandButton

Private Sub Form_Load()
Set cmd = Controls.Add("VB.CommandButton", "cmd")
cmd.Visible = True
End Sub

第4个回答  2015-12-24
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/b/ad') do (
for /f %%j in ('dir/ad/b "%%i"^|find /c /v ".*"') do set d=%%j
for /f %%j in ('dir/a-d/b "%%i\*.jpg"^|find /c /v ".*"') do set f=%%j
echo 文件夹%%i下有!d!个文件夹下有jpg.共有jpg文件!f!张.)
pause

相似回答