2015-02-28 24 views
6

Używam następujący kod PowerShell i muszę sprawdzić jego rozszerzenie w if warunekSprawdź plik rozszerzenia

foreach ($line in $lines) { 
    $extn = $line.Split("{.}")[1] 
    if ($extn -eq "xml") 
    { 
    } 
} 

Czy istnieje prosty sposób na sprawdzenie rozszerzenia smyczkowy skryptu PowerShell w przypadku strun?

+0

Jeśli przestawiłeś [z tego pytania] (http://stackoverflow.com/questions/28785132/download-file-from-ftp-based-on-extensions-powershell), usuń go. Wygląda na to, że porzuciłeś go na korzyść tego, który jest tą samą kwestią, ale lepiej brzmiącą: – Matt

Odpowiedz

10

można po prostu użyć funkcji GetExtension z System.IO.Path:

foreach ($line in $lines) { 
    $extn = [IO.Path]::GetExtension($line) 
    if ($extn -eq ".xml") 
    { 
    } 
} 

Demo:

PS > [IO.Path]::GetExtension('c:\dir\file.xml') 
.xml 
PS > [IO.Path]::GetExtension('c:\dir\file.xml') -eq '.xml' 
True 
PS > [IO.Path]::GetExtension('Test1.xml') # Also works with just file names 
.xml  
PS > [IO.Path]::GetExtension('Test1.xml') -eq '.xml' 
True  
PS > 
+0

Ale moja $ linia to tylko ciąg, powiedzmy "Test1.xml", czy to zadziała na łańcuchu? –

+0

Tak, zobacz moją edycję. Jeśli chodzi o funkcję 'GetExtension',' 'Test1.xml" 'jest wciąż nazwą pliku. – iCodez

+0

$ extn = [IO.Path] :: GetExtension ($ line) ta linia zgłasza "Niedozwolone znaki w wyjątku ścieżki" Mam niestandardowe rozszerzenia, więc będzie to jak test.c.c2014 –