找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 12329|回复: 5

[文本处理] 求助批处理去掉重复内容,仅保留不重复的名字

[复制链接]
发表于 2024-8-15 22:31:32 | 显示全部楼层 |阅读模式
文件A.txt包含如下名称
Liming
wangqiang
zhihong
lingming
lina
wangzhang

我想利用循环语句,将上述名称中重复的去掉(实际文本更长,上面的是个例子)。编写了如下命令
  1. if exist new.txt del new.txt

  2. set/a num=0

  3. setlocal enabledelayedexpansion

  4. for /f %%a in (a.txt) do (
  5.     set/a num=!num!+1
  6.     call :chkslt !num!
  7.     echo %%a>>set2.csv     
  8.     :next
  9.    
  10.     :chkslt
  11.     for /f "skip=%1" %%b in (set1.csv) do (
  12.     if %%a==%%b goto next
  13.                                              )
  14.                                 )
复制代码
我需要在:chkslt的循环,当出现%%a==%%b的时候,能够跳出当前循环,进入到上层循环,该如何做呀?我用了goto next,可以不行。请高手给与指导
 楼主| 发表于 2024-8-15 23:06:52 | 显示全部楼层
我这个程序不行,我本想通过两个循环迭代的方式,实现去重。目前的这个call:chkslt的方式,不是重复循环的概念。还请高手给与援手,先提前谢过
发表于 2024-8-15 23:30:38 | 显示全部楼层
回复 1# delab-1


批处理如何删除文本文件中重复的行
http://bbs.bathome.net/thread-5219-1-1.html

批处理如何删除txt文本中的重复行
http://bbs.bathome.net/thread-5509-1-1.html

批处理去除超大文本中的重复行
http://bbs.bathome.net/thread-4690-1-1.html

批处理删除文本重复行时如何使用变量延迟扩展
http://bbs.bathome.net/thread-5326-1-1.html

批处理中sort命令如何过滤重复行
http://bbs.bathome.net/thread-4896-1-1.html
 楼主| 发表于 2024-8-16 01:04:26 | 显示全部楼层
太感谢了,非常棒!!!
发表于 2024-8-16 10:10:39 | 显示全部楼层
本帖最后由 haichuan5121 于 2024-8-16 11:08 编辑

回复 3# Batcher


    CSV格式的怎么搞定;也是需要去重,需要第17行开始前三列一致的行去重,即仅保留以数字1-20数字开头的行,行数不一定50个以内;
结果保留
No        X-Point        Y-Point
1        80.2        16.8
2        270.8        16.8
3        448.3        16.8
4        678.5        16.8
5        875.4        16.8
6        1038.1        16.8
7        1038.1        436.7
8        875.4        436.7
9        678.5        436.7
10        448.3        436.7
11        270.8        436.7
12        80.2        436.7
13        80.2        862.9
14        270.8        862.9
15        448.3        862.9
16        678.5        862.9
17        875.4        862.9
18        1038.1        862.9
19        1038.1        1283.3
20        875.4        1283.3
21        678.5        1283.3
22        448.3        1283.3
23        270.8        1283.3
24        80.2        1283.3


源内容是
bbb                               
Slot No        1                       
Date        0.00E+00                       
Lot ID        0.00E+00                       
Operator ID        AGV                                        
Cassette ID        0.00E+00                       
Retry        0                       
Recipe ID        23s                                       
Std Min Value        0.00E+00                       
Std Max Value        1.00E+09                       
Ctl Min Value        0.00E+00                       
Ctl Max Value        1.00E+09                       
Function        SHEET                           
Curr.Range        AUTO                              
Volt Range        AUTO                              
No        X-Point        Y-Point        Data        Result   
1        80.2        16.8        asd        OK   
2        270.8        16.8        asd        OK   
3        448.3        16.8        asd        OK   
4        678.5        16.8        asd        OK   
5        875.4        16.8        asd        OK   
6        1038.1        16.8        hdfg        OK   
7        1038.1        436.7        asd        OK   
8        875.4        436.7        asd        OK   
9        678.5        436.7        sc        OK   
10        448.3        436.7        asd        OK   
11        270.8        436.7        asd        OK   
12        80.2        436.7        asd        OK   
13        80.2        862.9        sfs        OK   
14        270.8        862.9        asd        OK   
15        448.3        862.9        asd        OK   
16        678.5        862.9        asd        OK   
17        875.4        862.9        asd        OK   
18        1038.1        862.9        asd        OK   
19        1038.1        1283.3        asd        OK   
20        875.4        1283.3        asd        OK   
21        678.5        1283.3        asd        OK   
22        448.3        1283.3        asd        OK   
23        270.8        1283.3        0.00E+00        OK   
24        80.2        1283.3        0.00E+00        OK   
MAX        3.59E+02
发表于 2024-8-16 12:32:06 | 显示全部楼层
  1. if exist new.txt del new.txt
  2. set/a num=0
  3. setlocal enabledelayedexpansion
  4. (for /f %%a in (a.txt) do (
  5.         set/a num=num+1
  6.         call :chkslt !num!
  7.         if errorlevel 2 (
  8.                 echo %%a
  9.         )
  10. ))>set2.csv
  11. pause
  12. exit

  13.         :chkslt
  14.         for /f "skip=%1" %%b in (set1.csv) do (
  15.                 if %%a==%%b (
  16.                         exit /b 1
  17.                 )
  18.         )
  19.         exit /b 2
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 19:39 , Processed in 0.010153 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表