[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 77七 于 2023-4-15 17:10 编辑

回复 5# buyiyang


   学习了!很久以前见到过 set # 这种用法,一直不是很理解。在这个实例中,会不会 存在 计数为8的,也被统计出来呢
试了一下,好像不会
bat小白,请多指教!谢谢!

TOP

回复 2# 77七


    10行以后也可以这样
  1. (for /f "tokens=1,2 delims=#=" %%a in ('set #') do (
  2. if %%b equ 7 (echo,%%a)
  3. ))>d:\data2\B.txt
  4. pause
复制代码
1

评分人数

    • 77七: 感谢分享技术 + 1

TOP

回复 3# 思想之翼


   直接 in ('type *.txt') ,好方法!学习了!
bat小白,请多指教!谢谢!

TOP

本帖最后由 思想之翼 于 2023-4-15 16:39 编辑

回复 2# 77七
感谢!合并文件夹内所有文本,是中间过程,觉得没必要输出,可以将所有文本数据读入内存,在内存中提取重复数为N的字符,然后输出。

TOP

  1. @echo off
  2. cd /d "d:\data1\"
  3. (type *.txt >>xxx.temp) 1>nul
  4. for /f "delims=" %%a in (xxx.temp) do (
  5. for %%b in (%%a) do (
  6. set/a #%%b+=1
  7. )
  8. )
  9. cd.>d:\data2\B.txt
  10. setlocal enabledelayedexpansion
  11. (for /f "delims=" %%a in (xxx.temp) do (
  12. for %%b in (%%a) do (
  13. if !#%%b! equ 7 (
  14. echo %%b
  15. set /a #%%b+=1
  16. )
  17. )
  18. ))>d:\data2\B.txt
  19. endlocal
  20. del xxx.temp
  21. pause
复制代码

不合并也可以,就是文本过多,可能会影响效率。昨天”优化“那个帖子代码,中间的延迟变量就是为了单独计数每个文本,去掉之后就是所有文本一起计数。
code  不合并
  1. @echo off
  2. cd /d "d:\data1\"
  3. for /r %%i in (*.txt) do (
  4. for /f "delims=" %%a in ('type "%%i"') do (
  5. for %%b in (%%a) do (
  6. set/a #%%b+=1
  7. )
  8. )
  9. )
  10. cd.>d:\data2\B.txt
  11. setlocal enabledelayedexpansion
  12. (for /r %%i in (*.txt) do (
  13. for /f "delims=" %%a in ('type "%%i"') do (
  14. for %%b in (%%a) do (
  15. if !#%%b! equ 7 (
  16. echo %%b
  17. set /a #%%b+=1
  18. )
  19. )
  20. )
  21. ))>d:\data2\B.txt
  22. endlocal
  23. pause
复制代码



1

评分人数

bat小白,请多指教!谢谢!

TOP

返回列表