首页 > 解决方案 > 查找重复的数量并批量复制该行

问题描述

File_1我有:

Word_1;ger
Word_1;gr
Word_1;greber
Word_1;gaerfsd
Word_2;gerbhge
Word_2;tgbzrfvd
Word_3;gzfdfdc

我想计算每行第一列的重复次数,然后根据重复次数(一个或不同),我会将它们复制粘贴到两个不同的文件中。

File_2将包含:

Word_3;gzfdfdc

File_3将包含:

Word_1;ger
Word_1;gr
Word_1;greber
Word_1;gaerfsd
Word_2;gerbhge
Word_2;tgbzrfvd

这是我写的代码:

setlocal EnableDelayedExpansion
    (for /f "tokens=1-2 delims=;" %%a in (File_1) do (
        set current_line=%%a
        if "!current_line!" NEQ "!previous_line!" (
            for /f %%C in ('Find /C %%a ^< File_1) do (
                set Count=%%C
                if "!Count!==1" (
                        findstr %%a File_1 >>File_2
                )
                if not "!Count!==1" (
                        findstr %%a File_1 >>File_3
                )
            )
        )
        set previous_line=!current_line!
    )

它似乎不起作用。任何帮助?

标签: batch-fileduplicatesfindstr

解决方案


删除了一个不需要的变量,更正了错误的if语法并为“最佳实践”添加了一些引号。似乎完全按照您的意图做:

setlocal EnableDelayedExpansion
(for /f "tokens=1-2 delims=;" %%a in (File_1.txt) do (
  if "%%a" NEQ "!previous_line!" (
    for /f %%C in ('Find /C "%%a" ^< File_1.txt') do (
      if "%%C"=="1" (
        findstr "%%a" File_1.txt >>File_2.txt
      ) else (
        findstr "%%a" File_1.txt >>File_3.txt
      )
    )
  )
  set "previous_line=%%a"
))

推荐阅读