好吧,这让我抓狂,但我会尽力解释自己:)
我有一个包含重复项和非重复项的文件夹,如下所示
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 个重复项,以便我可以提取这些文件。
--- 好吧,我尝试了下面的脚本,它运行良好,但它没有像上面提到的那样“提取”。
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/