[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 4# hfg1977


    谢谢你的指点,我自己在去试试看,感到很难做到分开统计。

TOP

本帖最后由 playinthesky 于 2011-8-24 20:20 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. call ascmap $
  3. for  %%a in (*.dat) do (
  4.   for /f "delims=%$:~0x05,1% usebackq tokens=*" %%b in (%%a) do (
  5.     set "str=%%b"
  6.     set "str=!str:%$:~0x05,1%= !"
  7.     set "str=!str:-=^!"
  8.       for %%i in (!str!) do (
  9. if defined _%%i (set /a _%%i+=1
  10.         )  else (
  11.            set /a _%%i=1
  12.         )
  13.       )
  14.       for /f "tokens=1,2 delims=_=" %%j in ('set _') do echo 出现 %%k 的次数 %%p
  15.         if %%p gtr %%k del %%a
  16.    )
  17. )
  18. pause
复制代码
计数器很难调用,就是统计出现的数目,若是出现数目超过一定数目就将其文件删除,高手,帮帮我。

TOP

代码的第4的分隔符, 第6行需替换的" " 看起来是空格,其实是羊头.

再告诉你羊头的写法:  echo  ++^E++>21.txt
再告诉你"^E" 的写法: CMD环境, "ctrl + E" 两个键同时按,或按住"ctrl" 再按"E"
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

看级几遍LZ的表述,  没看懂.

猜测其意思是 某DAT文件,以草花符号(0x05)分割,若有3+处重复则删除该DAT文件.
首先纠正LZ的几个基础错误:
1. 草花符号(0x05), 仅仅是你在CMD字符环境下看到的.,在notepad中是个羊头,在IE中是""
   在ASCII字符表中它属于不可见字符,即控制用字符. 控制用字符在不同环境影像是不同的.
2. CMD不能直接操作16进制字符.

不建议用"控制字符"做分隔符.
  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. :start ============================================================
  4. for /f "tokens=* usebackq delims=" %%a in ("01.txt") do (
  5. set str=%%a
  6. set str=!str:= !
  7. set str=!str:-=m!
  8. for %%A in (!str!) do (
  9. set/a _%%A+=1
  10. echo %%A 出现!_%%A!次
  11. if !_%%A! GEQ 3 (echo gtr 3 wait del is ...)
  12. ))
  13. :end ==============================================================
  14. endlocal&echo 按任意键退出&pause>nul
复制代码
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

大致看了下,比较可能的错误原因如下:
  1. 1、那个 ascmap 是集成函数,需要保存到 path 路径或者当前目录,请确认此函数文件是否存在
  2. 2、同级的变量相互嵌套需要借助 call 或者 for :
  3. for %%a in ("!$:~0x05,1!= ") do set "str=!str:%%~a=!"
  4. 3、将草花替换为空格的办法并不适合存在连续草花的情况,而且也需要确保文本中不存在空格、制表符等特殊字符
复制代码
思路:
  1. 1、如果两个符号之间不连续,可以通过 for /f "tokens=1-4 delims=%$:~0x5,1%" %%a in... 来以草花符号划分行内容,只要存在 %%b 或者更高的参数变量说明语句中存在草花
  2. 2、否则,可以合并所有行,并将草花替换为换行符,然后...
  3. 3、实在不行就逐字判断吧
复制代码

TOP

返回列表