Board logo

标题: [文本处理] [已解决]求批处理列出当前文件夹所有文件夹里面的文件数量,包含子文件夹 [打印本页]

作者: 未知2022    时间: 2022-3-31 18:54     标题: [已解决]求批处理列出当前文件夹所有文件夹里面的文件数量,包含子文件夹

举例,

比如我打开某个文件夹,里面一级文件夹是这样的

RAVAntivirus
Reference Assemblies
Rockstar Games
SQLite Expert
Uninstall Information



最终结果




444RAVAntivirus
66464Reference Assemblies
66455Rockstar Games
7565SQLite Expert
5666Uninstall Information


其数字是里面每一个文件夹里面包含子文件夹的文件的数量


目前我有一个bat,但是他仅仅会给出这里面一级目录,不会包含子文件夹

比如RAVAntivirus目录实际上有444文件,但是打开第一层目录只有1个文件,结果就只有1而不是444


求大佬帮帮忙,求之前已经找了很久了
作者: buyiyang    时间: 2022-3-31 19:27

本帖最后由 buyiyang 于 2022-3-31 19:37 编辑
  1. @echo off
  2. set /p ml=请输入包含路径的目录:
  3. cd /d "%ml%"
  4. set n=0
  5. for /f "delims=" %%i in ('dir /a-d /b /s') do set /a n+=1
  6. echo 该目录共有%n%个文件
  7. pause>nul
复制代码

作者: Batcher    时间: 2022-3-31 20:21

回复 1# 未知2022


test_1.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b /ad') do (
  5.     set n=0
  6.     for /f "delims=" %%j in ('dir /b /s /a-d "%%i"') do (
  7.         set /a n+=1
  8.     )
  9.     echo !n!%%i
  10. )
  11. pause
复制代码

作者: Batcher    时间: 2022-3-31 20:23

回复 1# 未知2022


test_2.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b /ad') do (
  5.     for /f "tokens=1 delims=:" %%j in ('dir /b /s /a-d "%%i" ^| findstr /n .*') do (
  6.         set n=%%j
  7.     )
  8.     echo !n!%%i
  9. )
  10. pause
复制代码

作者: went    时间: 2022-3-31 20:28

显示正确就把第8行的REM删掉
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (*) do (
  4. echo %%i
  5. set "file_num="
  6. for /f %%a in ('dir /s /a-d "%%i\*" ^| findstr "个文件"') do set "file_num=%%a"
  7. echo !file_num!%%i
  8. REM rename "%%i" "!file_num!%%i"
  9. echo -------------
  10. )
  11. pause&exit
复制代码

作者: 未知2022    时间: 2022-3-31 20:42

回复 4# Batcher


    老大给的两个都测试了,不成功,没有正确的提示,

不过楼下的大大给的代码测试成功了
作者: buyiyang    时间: 2022-3-31 20:55

本帖最后由 buyiyang 于 2022-3-31 21:03 编辑

回复 6# 未知2022


    大佬可能有点疏忽,没有找子目录,但我测试了代码是对的
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. for /f "delims=" %%i in ('dir /ad /b') do (
  5.        set n=0
  6. for /f "delims=" %%j in ('dir /a-d /b /s "%%i"') do (
  7.        set /a n+=1
  8.           )
  9. echo !n!%%i
  10. )
  11. pause>nul
复制代码

作者: 未知2022    时间: 2022-3-31 21:04

回复 7# buyiyang


    没有评分了,感谢老哥的回复,上面的已经解决了
作者: Batcher    时间: 2022-3-31 21:21

回复 6# 未知2022


    谢谢提醒,以添加 /s 参数。
作者: 未知2022    时间: 2022-3-31 21:32

回复 9# Batcher


    好的,感谢各位大大的回复!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2