Powershell: Hur ange citat-tecken i kod utan att det tolkas som program-instruktion?
Jag gör ett enkelt PS-skript som skannar igenom filnamn efter bokstäver/tecken som inte ska tillåtas i filnamn, och ändrar dessa bokstäverna. Hittar skriptet ett "Ÿ" i ett filnamn ska den bokstaven bytas ut bokstaven till "Y" osv.
Problemet uppstår när jag vill ange alla tecken som ska betraktas otillåtna i t.ex. en variabel.
$UnsupportedChars = '[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ¡¢£¤¥¦§¨©ª«¬®¯]'
I dom tecken som ska vara otillåtna, ingår även det tecken - apostrof i här fallet - som både börjar OCH avslutar variabel. Förenklat exempel:
$UnsupportedChars = '[ab/def']'
Med andra ord, i variabelinnehållet ovan så förekommer apostrof som ett av dom tecken som ska betraktas som otillåtet tecknen (se 7e tecknet i båda variabel-innehållen ovan). Men den apostrofen signalerar då till programmet att detta är slutet på variabelinnehållet - vilket inte är avsikten.
Jag vill kunna ange "alla" tecken som innehåll i variabeln, utan något av dom tecknen tolkas som instruktion/avslut av variabeln. Har problem att förstå hur jag kan komma runt det dilemmat. Begränsad PS-kunskap. Skulle uppskatta hjälp/tips/tankar.
Har ett liknande problem senare i koden, närmare bestämt i loopen som söker igenom filnamnen och ersätter otillåtna tecken med tillåtna motsvarigheter. Det är tänkt såhär:
if ($_.Value -match "Å") { $newFileName = ($newFileName -replace "Å", "A") }
Men det blir problem när jag vill ange att det är just Citat-tecken jag vill ersätta/radera ur filnamn, eftersom citat-tecknet används ju just för att definiera tecknet som ska anges/bearbetas:
if ($_.Value -match """) { $newFileName = ($newFileName -replace """, "-") }
PS godkänner inte ens koden som körbar då.
När citat-tecken är just tecknet som ska anges, hur kan man göra då? Samma princip som ovanstående problem.
PS. fattar att folk kan tänka "men vem fasen anger citat-namn i filnamn?". Tänkte så jag med, men en del användare av enkla servern som jag kör för jobbet, är liksom 'dator-dummies' till sin natur .DS