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

[文本处理] 批处理如何删除文本中以指定字符分割成的两个字段/列相同的行

本帖最后由 pcl_test 于 2016-11-11 19:10 编辑

批处理BAT如何删除重复文本?
ABCD-----ABCD
ACDE----ACDEAF
CGHC----ABCGHC

上面这3组 左边跟右边完全 一模一样的  删除   
左边跟右边不一样的就保留
第一组删除  留下二三组

请会的朋友帮忙 谢谢!

for /f "tokens=1,2 delims=——" %%a in (1.txt) do if /i "%%a"=="%%b" echo %%a
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

  1. @echo off
  2. (for /f "tokens=1,2 delims=-" %%a in (1.txt) do (
  3.     if "%%a" neq "%%b" (
  4.         echo %%a----%%b
  5.     )
  6. ))>2.txt
复制代码

TOP

回复 2# cjiabing
貌似无法保存 BAT一闪就没了

TOP

回复 3# DAIC
批处理的结果都变样了 很长的一段文本被分割成一半 不知道怎么了

TOP

回复 5# necnec1


    把你的原始文件压缩之后传上来我试试

TOP

回复 6# DAIC


FEC(TT)03-2998 E-CC(TT)22-3001-75CE359CC-----FEC(TT)03-2998 E-CC(TT)22-3001-75CE359CC
FEC(TT)03-2998 E-CC(TT)22-3551-22CE359CC-----ECFEC(TT)03-2998 E-CC(TT)22-3551-22CE359CC

就是这2组文本 你保存为文本文件就行了

TOP

借三楼代码小改一下就行了:
  1. @echo off
  2. (for /f "delims=" %%a in (1.txt) do (
  3.     set "str=%%a"
  4.     setlocal enabledelayedexpansion
  5.     if "!str:*-----=!!str:*-----=-----!" neq "!str!" echo !str!
  6.     endlocal
  7. ))>2.txt
复制代码

TOP

本帖最后由 blueskyczg 于 2014-5-8 17:11 编辑

回复 8# CrLf
"!str:*-----=!!str:*-----=-----!"
能不能rem下,没看懂,望指教!

TOP

!str:*-----=!
是把 ACDE----ACDEAF 替换成 ACDEAF
!str:*-----=-----!
是把 ACDE----ACDEAF 替换成 -----ACDEAF

所以
  1. if "!str:*-----=!!str:*-----=-----!" neq "!str!"
复制代码
相当于
  1. if "ACDEAF----ACDEAF" neq "ACDE----ACDEAF"
复制代码
其实写成这样可能更容易看懂
  1. if "!str:*-----=!-----!str:*-----=!" neq "!str!"
复制代码

TOP

回复 7# necnec1


    顶楼就应该给出这种格式的数据,而不是瞎编数据。

TOP

返回列表