Utilizzare uno script per automatizzare l'esecuzione di attività che potrebbero essere eseguite in alternativa, una per una, da un operatore umano.
Ci sono due utili script IMHO in la mia risposta alla domanda originale su Stack Overflow Windows / NTFS: due file con nomi lunghi identici nella stessa directory? .
appendice per il completamento della storia. Ecco un altro approccio per risolvere l'OQ ( il mio primo tentativo assoluto ). Lo script mette a confronto stringhe (ad esempio nomi di file) della stessa lunghezza carattere per carattere e restituisce caratteri diversi (o non ANSI):
param( [string[]] $strArr = @('ΗGreek', 'НCyril', 'HLatin') )
Set-StrictMode -Version latest
$strDiff = ''
$arrDiff = @()
for ($i=0; $i -lt $strArr.Count; $i++) {
for ($j=$i+1; $j -lt $strArr.Count; $j++) {
if ( ($i -ne $j) -and ( $strArr[$i].Length -eq $strArr[$j].Length) ) {
for ($k=0; $k -lt $strArr[$i].Length; $k++) {
if ( # -and # different characters AND
( [int][char]$strArr[$i][$k] -gt 255 -or
[int][char]$strArr[$j][$k] -gt 255 ) )
{ # at least one is out of pure ASCII range
if ( $strArr[$i][$k] -ne $strArr[$j][$k] ) {$Eq = '#'} else {$Eq = '='}
if ( $strDiff -notmatch $strArr[$i][$k] ) { $strDiff += $strArr[$i][$k]}
if ( $strDiff -notmatch $strArr[$j][$k] ) { $strDiff += $strArr[$j][$k]}
$arrDiff += "{0,4} {1} U+{2:x4} $Eq {3} U+{4:x4} {5} {6}" -f
($k+1), $strArr[$i][$k], [int][char]$strArr[$i][$k],
$strArr[$j][$k], [int][char]$strArr[$j][$k],
$strArr[$i], $strArr[$j]
}
}
}
}
}
if ($strDiff.Length -ne 0 ) {
if ( Get-Command -Name Get-CharInfo -ErrorAction SilentlyContinue ) {
$strDiff | Get-CharInfo
}
'' # an indent line
$arrDiff
}
Produzione (un po 'difficile da esaminare ...) La prima tabella (con le intestazioni) viene emessa dall'abitudine (regolata) Get-CharInfo
cmdlet ; il secondo (senza intestazioni) è spiegato di seguito:
PS D:\PShell> .\SO\43381802.ps1 ( Get-childitem -path 'C:\testC\43381802' ).Name
Char CodePoint Category Description
---- --------- -------- -----------
e U+0065 LowercaseLetter Latin Small Letter E
е U+0435 LowercaseLetter Cyrillic Small Letter Ie
M U+004D UppercaseLetter Latin Capital Letter M
М U+041C UppercaseLetter Cyrillic Capital Letter Em
8 e U+0065 # е U+0435 MailClient.txt MailCliеnt.txt
1 M U+004d # М U+041c MailClient.txt МailClient.txt
1 M U+004d # М U+041c MailClient.txt МailCliеnt.txt
8 e U+0065 # е U+0435 MailClient.txt МailCliеnt.txt
1 M U+004d # М U+041c MailCliеnt.txt МailClient.txt
8 е U+0435 # e U+0065 MailCliеnt.txt МailClient.txt
1 M U+004d # М U+041c MailCliеnt.txt МailCliеnt.txt
8 е U+0435 = е U+0435 MailCliеnt.txt МailCliеnt.txt
1 М U+041c = М U+041c МailClient.txt МailCliеnt.txt
8 e U+0065 # е U+0435 МailClient.txt МailCliеnt.txt
Spiegazione di quest'ultima linea:
8
una posizione di carattere in entrambe le stringhe confrontate
e U+0065
un personaggio stesso ed è codepoint Unicode (1a stringa)
#
#
o =
(diverso o uguale ma non ANSI, rispettivamente)
е U+0435
un personaggio stesso ed è codepoint Unicode (seconda stringa)
МailClient.txt
Prima stringa stessa
МailCliеnt.txt
2a corda stessa