Dosya adı için girişi doğrulamak ve PowerShell'de geçersiz karakterler içerip içermediğini kontrol etmek istiyorum. Bu karakterden sadece biri girildiğinde işe yarayan ancak verilen bir alfanümerik dizenin bu karakterleri içerdiğinde işe yaramayacak olan yaklaşımı denedim. Regex'i doğru şekilde oluşturmadığımı düşünüyorum, verilen dizenin bu karakterleri içerip içermediğini doğrulamanın doğru yolu ne olurdu? Şimdiden teşekkürler. SonraDosya adı girişini Powershell'de doğrulayın
function Test-ValidFileName
{
param([string]$FileName)
$IndexOfInvalidChar = $FileName.IndexOfAny([System.IO.Path]::GetInvalidFileNameChars())
# IndexOfAny() returns the value -1 to indicate no such character was found
if($IndexOfInvalidChar -eq -1)
{
return $true
}
else
{
return $false
}
}
ve:
#Validate file name whether it contains invalid characters: \/: * ? " < > |
$filename = "\?filename.txt"
if($filename -match "^[\\\/\:\*\?\<\>\|]*$")
{Write-Host "$filename contains invalid characters"}
else
{Write-Host "$filename is valid"}
İstenirse, normal bir ifade deseni şu şekilde oluşturulabilir: '' [{0}] '-f [regex] :: Escape (([IO.Path] :: GetInvalidFileNameChars() -join' ')) –
Mathias, basitleştirilmiş yaklaşım işe yaradı ve aradığım şey buydu. Teşekkür ederim. – user5349170