Capita spesso di dover confrontare due o più file per verificare che siano uguali o meno, mi è capitato di vedere metodi alquanto inefficaci di controllare questi file come vedere se il numero di byte è uguale o addirittura leggere riga per riga il contenuto.
Sappiamo bene che la miglior soluzione per confrontare dei file è effettuare l’hash di essi e verificare che siano identici. Quindi andremo a scrivere un piccolo script che con un solo click ci permetterà di verificare se dei file sono uguali o meno tra di loro.
Lo script che andremo scrivere sarà in powershell che ci indicherà se i file selezionati sono uguali tra di loro con un messaggio a schermo.
Lo script "C:\scripts\OneClick\ConfrontaFileOneClick.ps1" sarà il seguente.
# Importo librerie
Add-Type -AssemblyName PresentationCore,PresentationFramework
New-Object -TypeName System.Collections.ArrayList
# Istanzio array dove salvo gli hash
$hashes = [System.Collections.Arraylist]@()
# Calcolo hash di tutti i file
foreach( $path in $args ) {
$hashes.Add((Get-FileHash $path).Hash)
}
# Verifico che tutti gli hash siano uguali tra di loro e visualizzo un messaggio in base al risultato
If ( @($hashes | Select -Unique).Count -eq 1 ) {
[System.Windows.MessageBox]::Show("Tutti i file sono uguali!", "Compara File OneClick", 'OK', 'Information')
}
Else {
[System.Windows.MessageBox]::Show("I file selezionati sono differenti tra loro!", "Compara File OneClick", 'OK', 'Error')
}
A questo punto non rimane altro che aggiungere lo script nel menù del tasto desto, per farlo non possiamo metterlo tramite le chiavi di registro, in quando verrebbe eseguito lo script per ogni file selezionato, ma dobbiamo usare un piccolo trucco e aggiungerlo nel sotto menù “Invia a”.
Andiamo sotto la cartella %appdata%\Microsoft\Windows\SendTo e creiamo un collegamento con nome “Compara File In OneClick” che punta allo script nel seguente modo:
"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -WindowStyle Hidden -File "C:\scripts\OneClick\ConfrontaFileOneClick.ps1"
In questo modo la finestra della console non verrà mostrata grazie al parametro -WindowStyle Hidden e verrà passata la lista dei file selezionati allo script che viene recuperata dalla variabile $args.
La nostra funzionalità è già disponibile e non richiede nessun riavvio, selezioniamo i files che vogliamo confrontare, click destro -> “Invia a” -> “Compara File In OneClick”.




Lascia un commento