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

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

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

TOP

因为计数不会按照每个dat文件统计,所以删除出现内容重复的dat 也是错误的,是否能发现每个dat文件出现重复数超过3+的时候删除


当然可以, 每处理完一个文件把变量清空.
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

  1. set str=!str:-=m!
  2. for %%A in (!str!) do (
  3. set/a _%%A+=1
  4. ...
复制代码
要把 "str'中的"运算符号"替换掉, 不然for中的 "set/a"计算会出错
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

你要处理的文件很多,且都是如上传文件类似用"草花"分隔的?
这个要问清,不然没法写code.
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

我去找ascmap.
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

  1. @echo off
  2. call ascmap $
  3. for /f "tokens=* delims=" %%i in ('dir /a-d/b *.dat') do (
  4. echo.正在处理:%%~i&endlocal&setlocal enabledelayedexpansion
  5. for /f "tokens=* usebackq delims=" %%a in ("%%~i") do (
  6. set "str=%%a"
  7. set "str=!str:%$:~0x01,1%= !"
  8. set "str=!str:%$:~0x02,1%= !"
  9. set "str=!str:%$:~0x03,1%= !"
  10. set "str=!str:%$:~0x1E,1%= !"
  11. set "str=!str:%$:~0x04,1%= !"
  12. set "str=!str:%$:~0x05,1%= !"
  13. set str=!str:-=m!
  14. for %%A in (!str!) do (
  15. set/a _%%A+=1
  16. if !_%%A! GEQ 3 (echo %%A 出现!_%%A!次&echo gtr 3 wait del is ...&echo.)
  17. )))
  18. :end ==============================================================
  19. endlocal&echo 按任意键退出&pause>nul
复制代码
你先测试一下
'dir /a-d/b *.dat'  可以改成'dir /a-d/b/s *.dat' 以搜索子文件夹

由于有Hex字符,打个包吧, 额又占用论坛资源了.
1

评分人数

    • playinthesky: 高手,我都不知道怎么弄,谢谢你~!技术 + 1
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

本帖最后由 hfg1977 于 2011-8-24 21:40 编辑

唯一的第三方 就是 ascmap  在本论坛下的,
http://www.bathome.net/thread-12347-1-1.html
ver 1.01.02

以你上传的两个文件测试的.

ascmap 还真不会用,

修改一下就好了,
@echo off
setlocal enabledelayedexpansion&cls            在这里加一句,下面不变
....
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

返回列表