2013-07-08 18 views
0

我有通過測試產生的序列號和日期/時間列出的一千個文件,所有文件都在同一個目錄中。有些測試兩次。我想找到那些重複的序列號並將它們列在文本文件中。對於兩次測試的數字,前12個字符是相同的。列出部分重複的文件名到一個文本文件 - DOS/BATCH

ALT_1049670_20130302-103355_Results.log 
ALT_1049669_20130302-103022_Results.log --\ 
ALT_1049669_20130302-102811_Results.log ---- tested twice 

我已經開始使用此代碼:

@echo off 
setlocal enabledelayedexpansion 
for %%a in (*) do (
set dupl=%%~na 
set dupl=!dupl:~0,12! 
echo !dupl! >> dupl.txt 
) 

但是它列出的所有文件(至少前12個字符)的。我不知道如何讓它比較,只列出重複項。

請幫忙。

回答

0

Got it!

@echo off 
setlocal enabledelayedexpansion 
for %%a in (*) do (
set dupl=%%~na 
set dupl=%%a 
set dupl=!dupl:~4,7! 
echo !dupl! >> dupl.txt 
) 
call C:\PHP\PHP.exe dupl.php 
notepad duplicate.txt 

的調用dupl.php

<?php 
$file = file('dupl.txt'); 
$a = array(); 

foreach($file as $f) 
{ 
++$a[strtolower(trim($f))]; 
} 
foreach($a as $key => $value) 
{ 
if($value > 1) 
{ 
$f = fopen("duplicate.txt", "a"); 
echo $key . PHP_EOL; 
fwrite($f, $key . "\r\n"); 
} 
} 
fclose($f); 
相關問題