中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-15 08:09
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何得到下一级目录的包含文件数量? 查看 1,558 回复 7
楼 主 如何得到下一级目录的包含文件数量? 发表于 2008-08-25 13:22 ·  中国 陕西 西安 电信
新手上路
积分 10
发帖 4
注册 2008-08-25 12:53
UID 124104
性别 男
状态 离线
想要做这样的事情:
罗列当前目录的下一级子目录,并且能得到每个当前目录的下一级子目录包涵的文件数
先谢谢了
2 发表于 2008-08-25 13:34 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线

@echo off
for /f "tokens=*" %%a in ('dir /b /ad') do (
for /f "tokens=*" %%b in ('dir /s /b /a-d "%%a" 2^>nul') do (
set /a Folder_%%a+=1
)
)
set Folder_
3 我是新手,还有个实际应用问题 发表于 2008-08-25 13:53 ·  中国 陕西 西安 电信
新手上路
积分 10
发帖 4
注册 2008-08-25 12:53
UID 124104
性别 男
状态 离线
谢谢楼上的,假如我要的是每个当前目录的下一级子目录包涵的文件夹数,以及每个当前目录的下一级子目录的大小可以么?
谢谢,万分
4 发表于 2008-08-25 14:18 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /ad') do (
for /f "tokens=*" %%b in ('dir /s /b /a-d "%%a" 2^>nul') do (
set /a File_in_%%a+=1
set /a n+=%%~zb
)
echo 文件夹%%a中共有文件大小为!n!字节
 set "n=0"
for /f "tokens=*" %%b in ('dir /s /b /ad "%%a" 2^>nul') do (
set /a Folder_in_%%a+=1
)
)
echo.
echo 每个当前目录的下一级子目录包涵的文件数
set File_in_
echo.
echo 每个当前目录的下一级子目录包涵的文件夹数
set Folder_in_
echo.
pause
5 发表于 2008-08-25 14:26 ·  中国 陕西 西安 电信
新手上路
积分 10
发帖 4
注册 2008-08-25 12:53
UID 124104
性别 男
状态 离线
谢谢,实际我要完成的功能也就是在某个目录的任意一个子目录上右健属性看到的该目录包含文件数量,文件夹数量,以及大小
不过我要一次性得到当前目录下很多目录的同一属性。这样手动就很麻烦,特别是当前目录有上百个子目录,而每一个子目录又有上百万个文件和子目录,要统计起来不求助高手,相信我是要活活累死的。
真是万分感谢!
另外我可以假如qq群么?开始对这一块感兴趣了
6 发表于 2008-08-25 14:43 ·  中国 陕西 西安 电信
新手上路
积分 10
发帖 4
注册 2008-08-25 12:53
UID 124104
性别 男
状态 离线
还有个问题

echo 文件夹%%a中共有文件大小为!n!字节
 set "n=0"
这两句,前一句执行完以后报一个错
'iiset' is not recognized as an internal or external command

并且多个同级子目录的大小确是累加的,也就是到第三个目录,现实的是前三个目录的综合大小这样子
7 发表于 2008-08-25 16:05 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
问题1:加个双引号试试
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /ad') do (
 set "n=0"
for /f "tokens=*" %%b in ('dir /s /b /a-d "%%a" 2^>nul') do (
set /a File_in_%%a+=1
set /a n+=%%~zb
)
echo 文件夹"%%a"中共有文件大小为!n!字节
for /f "tokens=*" %%b in ('dir /s /b /ad "%%a" 2^>nul') do (
set /a Folder_in_%%a+=1
)
)
echo.
echo 每个当前目录的下一级子目录包涵的文件数
set File_in_
echo.
echo 每个当前目录的下一级子目录包涵的文件夹数
set Folder_in_
echo.
pause

如果问题依旧,请给出包含'iiset'的文件夹的全名。

问题2:上面的代码修改了变量初始化的位置,再试试吧。
8 发表于 2010-08-20 23:06 ·  中国 湖南 怀化 电信
新手上路
积分 12
发帖 9
注册 2008-02-01 15:59
UID 109967
性别 男
状态 离线
谢谢,下载收藏了!
论坛跳转: