Use um script para automatizar a execução de tarefas que podem, alternativamente, ser executadas uma a uma por um operador humano.
Existem IMHO dois scripts úteis em minha resposta para a pergunta original no Stack Overflow Windows / NTFS: Dois arquivos com nomes longos idênticos no mesmo diretório? .
Adendo para fins de conclusão do histórico. Aqui está outra abordagem para resolver o OQ ( minha primeira tentativa absoluta ). O script compara strings (por exemplo, nomes de arquivos) do mesmo caractere de comprimento por caractere e gera resultados diferentes (ou não-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
}
Saída (um pouco difícil de pesquisar ...) A primeira tabela (com cabeçalhos) é produzida a partir do personalizado (ajustado) Get-CharInfo
cmdlet ; o último (sem cabeçalhos) é explicado abaixo:
PS D:\PShell> .\SO381802.ps1 ( Get-childitem -path 'C:\testC381802' ).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
Explicação da última linha:
-
8
uma posição de caractere em ambas as cadeias de comparação
-
e U+0065
um caractere e seu codepoint Unicode (1a string)
-
#
#
ou =
(diferente ou igual, mas não ANSI, respectivamente)
-
е U+0435
um caractere em si e o codepoint do Unicode (segunda string)
-
МailClient.txt
primeira string
-
МailCliеnt.txt
2º string em si