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


    高手,加个计数器,等到重复两个或者三个的时候,直接删除。谢谢

TOP

回复 10# CrLf


    是纯批处理,可不可以加入一个计数器,等到重复到一定个数的时候删除?求教。

TOP

本帖最后由 playinthesky 于 2013-3-12 00:07 编辑

回复 8# terse


    我想加入计数器,在第二个FOR里面,重复内容5个以上的时候,删除文本,你的这个版本真心好!

TOP

纯批的话我会这样:
  1. @echo off
  2. findstr . *.txt|sort /o tmp.$
  3. (for /f "tokens=1* delims=:" %%a ni (tmp.$) do (
  4.    set "str=%%a"
  5.    setlocal enabledelayedexpansion
  6.    if !last!==!str! del "%%a"
  7.    endlocal
  8.    set last=%%a
  9. )) 2>nul
  10. pause
复制代码

TOP

回复 8# terse


    超级高!!!非常快!!!谢谢高手,那我就是要那个文本文件改写成.BAT就可以吧?可不可以直接一点的。。

TOP

回复  terse


    我那个是有格式的,所以必须按照上面的那种分隔符来,我去试试看!最最主要上万个。 ...
playinthesky 发表于 2013-3-11 23:35

有固定格式的话 把第二FOR 替换这样试
  1. for /f "tokens=2 delims=." %%j ..........
复制代码

TOP

回复 5# terse


    是加在最后?对么?试试看!

TOP

回复 5# terse


    我那个是有格式的,所以必须按照上面的那种分隔符来,我去试试看!最最主要上万个。。

TOP

这样提高点不
  1. @echo off&setlocal enabledelayedexpansion
  2. (for %%i in (*.txt) do (
  3.     set "a="
  4.     for /f "delims=" %%j in ('sort "%%i"') do (
  5.         if not defined a (
  6.            if "!str!" == "%%j" set a=a&echo del "%%i"
  7.            set "str=%%j"
  8.         )
  9.     )
  10. ))>$.#
  11. start "" "notepad" "$.#"
  12. pause
复制代码
1

评分人数

TOP

这种情况,上万个文件用纯批来处理估计有点慢哦

TOP

因为批处理每个都要历遍,但是为什么删除的时候,循环要检查好几次?

TOP

通过在BATHOME的学习,慢慢的学会写代码,希望大家再帮帮我,自己顶一下。

TOP

返回列表