好的,所以这让我疯了,但我会尝试解释自己以及我可以:)
我有一个重复文件夹和非重复文件夹,如下所示
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
)
)
)`
答案 0 :(得分:2)
@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
)
)
)
我错过了一个代币...感谢帮助人员。所以脚本现在正在运行。它会向.eml
文件夹发送包含3个以上相同前缀的output
个文件。