2015-02-28 11 views
6

मैं निम्नलिखित PowerShell कोड का उपयोग कर रहा हूँ और मैं में इसके विस्तार की जांच करनी है एक अगर हालतचेक फाइल एक्सटेंशन

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

वहाँ तार के मामले में PowerShell स्क्रिप्ट में स्ट्रिंग एक्सटेंशन की जांच करने के लिए एक सीधी रास्ता नहीं है?

+0

यदि आप [इस प्रश्न] से आगे बढ़े हैं (http://stackoverflow.com/questions/28785132/download-file-from-ftp-based-on-extensions-powershell) कृपया इसे हटाएं। ऐसा लगता है कि आपने इसे इस के पक्ष में छोड़ दिया है जो एक ही मुद्दा है लेकिन – Matt

उत्तर

10

आप बस System.IO.Path से GetExtension फ़ंक्शन का उपयोग कर सकते हैं:

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

डेमो:

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

बेहतर शब्द है लेकिन मेरी $ लाइन केवल एक स्ट्रिंग है, "test1.xml" कहें, क्या यह एक स्ट्रिंग पर काम करेगी? –

+0

हां, मेरा संपादन देखें। जहां तक ​​'GetExtension' फ़ंक्शन का संबंध है,' 'test1.xml "' अभी भी एक फ़ाइल का नाम है। – iCodez

+0

$ extn = [IO.Path] :: GetExtension ($ line) यह पंक्ति "पथ अपवाद में अवैध वर्ण" फेंकता है मेरे पास कस्टम किए गए एक्सटेंशन हैं इसलिए यह test.c.c2014 –

संबंधित मुद्दे