Powershell!
Hur definierar du "exotiska tecken"? Det bästa är att börja med en lista av tecken som du vet är okej, och sedan använda powershell och lite regulära uttryck för att söka.
Så här:
1. Starta Powershell. (Det finns redan på datorn i alla moderna Windows-versioner, du behöver inte installera något.)
2. Byt till katalogen du ska söka i med hjälp av det här kommandot:
cd 'C:\Sökväg\Till\Katalogen'
3. När du står i den katalogen, kör det här kommandot:
Get-ChildItem -Recurse | Where Name -notmatch '^[A-Za-z0-9 -.]+$'
Vad kommandot gör är att den söker efter alla filer vars namn inte matchar det regulära uttrycket ^[A-Za-z0-9 -.]+$
.
Get-ChildItem -Recurse
tar fram en lista på alla filer i den katalog du är ute efter. -Recurse
betyder att den även går in i underkataloger och tittar.
| Where Name -notmatch '^[A-Za-z0-9 -.]+$'
filtrerar sedan listan på filer så att endast filer vars namn INTE matchar det regulära uttrycket ^[A-Za-z0-9 -.]+$
visas.
"Fnuttarna" ('
) kring det regulära uttrycket är till för att Powershell ska behandla det som en sträng bokstavligen. Enda du egentligen bör tänka på ur Powershell-perspektiv är att du behöver skriva ''
(två fnuttar) när du menar '
i en '
-citerad sträng.
Resten av det regulära uttrycket är ändå rätt enkelt. ^
står för "början av namnet", och $
står för "slutet på namnet". Att sätta ^
och $
i början och slutet betyder att det inte får finnas något annat än [A-Za-z0-9 -.]+
i filnamnet.
[A-Za-z0-9 -.]
betyder att matcha ett tecken, i det här fallet allt mellan A och Z, allt mellan a och z, allt mellan 0 och 9, mellanslag, bindestreck, och punkt. +
-tecknet efteråt säger "ett eller flera såna tecken". D.v.s. du letar efter filnamn som endast innehåller de tecken du är ute efter. Vill du tillåta fler tecken är det bara att skriva in dem mellan hakparanteserna. Vissa specialtecken måste du dock skriva \
framför inuti din regex, annars funkar det inte.
Genom att vi sedan använt operatorn -notmatch
så betyder det att vi alltså bara plockar fram filer som INTE bara innehåller okej tecken.
Lycka till.
Lite ytterligare läsning för den intresserade:
Powershell 7: About Regular Expressions
Powershell 7: About Quoting Rules