2015-02-28 13 views
6

aşağıdaki PowerShell kod kullanıyorum ve onun uzantısını kontrol gereken bir dizeleri durumunda PowerShell komut dize uzantıları kontrol etmek için basit bir yolu var mıKontrol dosya uzantısı

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

koşul olur?

+0

[Bu soru] 'dan (http://stackoverflow.com/questions/28785132/download-file-from-ftp-based-on-extensions-powershell) başka bir yere taşındıysanız lütfen silin. Bu aynı sorun olan ama daha iyi – Matt

cevap

10

Sadece System.IO.Path den GetExtension işlevini kullanabilirsiniz:

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

ifadeli olan bu bir lehine onu terk edilmiş gibi görünüyor Ama benim $ line sadece bir dize, "Test1.xml" deyin, bu bir dizede çalışacak mı? –

+0

Evet, düzenlememe bakın. "GetExtension" işleviyle ilgili olarak, "Test1.xml" 'hala bir dosyanın adıdır. – iCodez

+0

$ extn = [IO.Path] :: GetExtension ($ line) bu satır "Yol istisnasında geçersiz karakterler" Özel uzantılarım var, bu yüzden test.c.c2014 –

İlgili konular