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