2015-02-28 10 views
6

Sto usando il seguente codice PowerShell e ho bisogno di controllare la sua estensione in una condizione ifVerificare file di estensione

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

C'è un modo semplice per controllare le estensioni delle stringhe nello script PowerShell in caso di stringhe?

+0

Se è stata spostata da [questa domanda] (http://stackoverflow.com/questions/28785132/download-file-from-ftp-based-on-extensions-powershell), eliminarla. Sembra che tu l'abbia abbandonato a favore di questo che è lo stesso problema ma meglio formulato – Matt

risposta

10

si può semplicemente utilizzare la funzione GetExtension da 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

Ma la mia riga $ è solo una stringa, diciamo "Test1.xml", funzionerà su una stringa? –

+0

Sì, vedere la mia modifica. Per quanto riguarda la funzione 'GetExtension',' "Test1.xml" 'è ancora il nome di un file. – iCodez

+0

$ extn = [IO.Path] :: GetExtension ($ line) questa riga genera "Caratteri non validi nell'eccezione del percorso" Ho estensioni personalizzate in modo tale che sarà come test.c.c2014 –