Windows 从包含大量重复项的文件夹中删除重复项超过5个的文件

Windows 从包含大量重复项的文件夹中删除重复项超过5个的文件,windows,batch-file,duplicates,Windows,Batch File,Duplicates,好吧,这让我发疯了,但我会尽力解释自己:) 我有一个文件夹的重复和非重复如下 1.txt 1.txt 1.txt 2.txt 2.txt 3.txt 3.txt 4.txt 4.txt 4.txt 4.txt 5.txt 6.txt 7.txt 7.txt 7.txt 7.txt 8.txt 现在我只想找到超过3个文件的副本,在本例中,这将是所有7.txt和4.txt文件。但是文件会转到infinity.txt 所以我无法预先设定条件。脚本必须识别有3个以上的副本,以便我可以提取这些文件 --

好吧,这让我发疯了,但我会尽力解释自己:)

我有一个文件夹的重复和非重复如下

1.txt
1.txt
1.txt
2.txt
2.txt
3.txt
3.txt
4.txt
4.txt
4.txt
4.txt
5.txt
6.txt
7.txt
7.txt
7.txt
7.txt
8.txt
现在我只想找到超过3个文件的副本,在本例中,这将是所有
7.txt
4.txt
文件。但是文件会转到
infinity.txt

所以我无法预先设定条件。脚本必须识别有3个以上的副本,以便我可以提取这些文件

---好的,所以我尝试了下面的脚本,它工作得很好,但是它没有像上面提到的那样“提取”

这是一个与我提出的一个问题有关的链接,但我极力想解释清楚

`@echo off
 setlocal EnableDelayedExpansion

 for %%a in (*.eml) do (
  for /F "tokens=3 delims=_" %%b in ("%%~Na") do (
   set "fileTime=%%b"
    for %%t in (!fileTime:~0^,4!) do (
     set /A "count[%%t]+=1"
     set names[%%t]=!names[%%t]! "%%a"
      )
   )
)

 for /F "tokens=2,3 delims=[]=" %%a in ('set count[') do (
  if %%b gtr 1 (
    for %%c in (!names[%%a]!) do (
      type "%%~c" >> C:\output\%%~ci.eml
      )
   )
)`

我错过了一个令牌。。。谢谢你们的帮助。所以脚本现在可以工作了。它将带有3个以上相同前缀的
.eml
文件发送到
输出
文件夹。

只需通过
如果%%b gtr 3
更改
如果%%b gtr 1
,或者5…在同一个文件夹中,你怎么可能有超过1个
1.txt
?你必须查看我包含的链接,才能准确理解我在说什么其他问题中没有重复的文件。这是多个共享相同前缀的文件。哇!正如我昨天所说,您刚刚通过
如果%%b gtr 3
“更改了
如果%%b gtr 1
”!原始代码没有任何缺少的令牌;由“
”标记=2,3,4…
定义的额外的
%%c
标记将被%%c命令的后
取消
@ECHO OFF
SETLOCAL EnableDelayedExpansion

FOR %%a in (*.eml) DO (
FOR /F "tokens=3 delims=_" %%b IN ("%%~Na") DO (
  SET "fileTime=%%b"
  FOR %%t in (!fileTime:~0^,4!) DO (
     SET /A "count[%%t]+=1"
     SET names[%%t]=!names[%%t]! "%%a"
      )
   )
)

FOR /F "tokens=2,3,4 delims=[]=" %%a IN ('set count[') DO (
IF %%b gtr 3 (
   FOR %%c IN (!names[%%a]!) DO (
       TYPE "%%~c" >> C:\output\%%~ci.eml
      )
   )
)