2015-09-30 41 views
1

我遇到問題。 我需要找到具有確切擴展名的所有文件形式的XML文件。 例如,我有這樣的XML來自xml文件的多個值

<?xml version="1.0" encoding="UTF-8"?> 
    <ls> 
    <files> 
     <file> 
     <filename value="data.txt" /> 
     </file> 
     <file> 
     <filename value="data.csv" /> 
     </file> 
     <file> 
     <filename value="data.bkp" /> 
     </file> 
     <file> 
     ... 
     ... 

     ... 
     ... 
     </file> 
    </files> 
</session> 

第一次,我需要得到所有TXT文件,第二次的所有DAT文件,第三次DAT,XLSX和TXT文件等

我知道如何讓文件確切的情況。

[xml]$files = Get-Content myxmlfile.xml 
$files.session.files.file.filename | Where-Object {$_.value -like "*.txt" -or $_.value -like "*.dat" -or etc...} 

如果條件在時間上仍然相同,這是完美的解決方案。 但如果它仍然在變化?我需要動態條件 - 或參數。

你知道我該怎麼做嗎? 像這樣

$mystring = "*.txt",*.dat" 
$files.session.files.file.filename | Where-Object {$_.value -include $mystring} 

回答

1

您可以使用正則表達式和-match運營商。例如:

$pattern = '\.(dat|txt)$' 
$files.session.files.file.filename | Where-Object { $_.value -match $pattern } 
+0

這正是我的意思。謝謝。 – exo