是否有一种简单的方法(不使用循环)将多个模式应用于一个字符串?
所以
"c:\myfile.txt" -like "*.dat","*.txt"
应该返回$ true
"c:\myfile.dat" -like "*.dat","*.txt"
应该返回$ true
“c:\ myfile.doc”-like“ .dat”,“ .txt”
应该返回$ false
答案 0 :(得分:2)
我不这么认为。你可以使用正则表达式:
"c:\myfile.txt" -match '^.+\.(dat|txt)$'
更新
从包含通配符模式的输入创建正则表达式模式:
PS> $or = '"*.dat","*.txt","*.foo"' -replace '"|\*\.' -replace ',','|'
PS> $pattern = '^.+({0})$' -f $or
PS> $pattern
^.+(dat|txt|foo)$
$string -match $pattern
答案 1 :(得分:1)
您可以尝试使用-match
代替-like
:
"c:\myfile.txt" -match "\.(dat|txt)$" ==> True
"c:\myfile.dat" -match "\.(dat|txt)$" ==> True
"c:\myfile.doc" -match "\.(dat|txt)$" ==> False