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

标签 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.txt4.txt 文件。但文件继续到 infinity.txt

所以我无法预设条件。该脚本必须识别出存在超过 3 个重复项,以便我可以提取这些文件。

--- 好吧,我尝试了下面的脚本,它运行良好,但它没有像上面提到的那样“提取”。

Here是我提出的与此相关的问题的链接,但我努力解释得足够好。

`@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
      )
   )
)`

最佳答案

@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
      )
   )
)

我错过了一个 token ...谢谢你们的帮助。所以脚本现在可以运行了。它将具有超过 3 个相同前缀的 .eml 文件发送到 output 文件夹。

关于windows - 从包含大量重复项的文件夹中删除重复项超过 5 个的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35917914/

相关文章:

不同平台上比较方法中的 C++ 常量引用

java - 在 Tomcat 容器中启动进程时遇到一个奇怪的错误。如何解决?

windows - 如何通过 bat 文件在 Mac 上使用 ffmpeg.dmg 与 Windows 上的 ffmpeg.exe 相同的方式?

mysql - GROUP CONCAT 一些不同,一些不同

php - 从 .EXE 中提取 .PNG?

Python 3.3.2 - 如何在 Windows 上运行脚本

c# - 如何判断提供的文件是否确实是注册表配置单元

windows - 在 Windows 批处理文件中的多个命令中使用 powershell 变量

php - 根据特定键在对象数组中查找重复项

mongodb - 查找具有相同字段但大小写不同的每个文档