Új hozzászólás Aktív témák

  • Jim-Y

    veterán

    Sziasztok

    PowerShellben csináltam egy olyan scriptet ami egy directoryban rekurzívan megnézi a duplikációkat, és a duplikált állományok nevét kigyűjti egy fájlba.

    A problémám az, hogy az algoritmus amit használtam/írtam nagyon lassú. Ha ~2000 fájlt kell összehasonlítania az még viszonylag gyors 10,15mp, de 5500 állománnyal már percek óta szöszöl :S
    megj: közben 2-3 perc múlva végzett

    Az ilyen rekurzív összehasonlítgatós dolgokat hogyan lenne célszerű megoldani?

    Jelenleg a kódom:

    $loc = get-location
    $files = get-childitem -Path $loc -Recurse | where {$_.Length -gt 0}
    $length = $files.length
    $multiples = @()
    for($i=0;$i -lt $length;++$i){
    $ismultiple = 0
    if($multiples -contains $files[$i].Name){ } else {
    $elem = $files[$i]
    for($j=$i+1;$j -lt $length;++$j){
    if($files[$j].Name -eq $elem.Name -and $files[$j].Length -eq $elem.Length){
    $multiples += $files[$j].FullName
    $ismultiple = 1
    }
    }
    if($ismultiple){
    $multiples += $elem.FullName
    $multiples += "`r`n`r`n"
    }
    }
    }
    $multiples > multiples.txt

    Látható, hogy először kigyűjtöm a fájlneveket egy tömbbe, majd az első rekordot keresem a fennmaradó elemek között, ha van duplikáció, akkor kiírom azokat a fájlba, és ugrok a második elemre.
    Szinte biztos vagyok benne, hogy van ennél hatásosabb módszer, de már túl késő van ahhoz, hogy rájöjjek, hogy mi az :)

    megj: haha, lehet csak azért szöszölt annyit, mert muter fél mappája duplikált, egy rahedli duplikációja van:O

Új hozzászólás Aktív témák