PowerShell - 在搜索数组时使用-pattern

时间:2012-11-14 21:39:19

标签: powershell

我的脚本正常使用当前数组值;但是,实际的文件名将在我要忽略的前缀中包含大约五个字符:其中一个文件名的示例:03_R_ __ 1087010076_9999992_35_401_01_20121107_134029_0667.I00.asd。我要解析的文件名的唯一部分是“108701 ####”忽略前缀03_R ___

$source ="\\127.0.0.1\baunhof\*"
$File_Array_8HP70=@("108701") 
$File_Array_8HP70X=@("108702")
$File_Array_9HP48=@("109401", "1094080", "1094090")
$File_Array_9HP48X=@("109402", "1094091", "1094082", "1094092")

$File_Array_8HP70_start = $File_Array_8HP70 | % {$_+"*"}
$File_Array_8HP70X_start = $File_Array_8HP70X | % {$_+"*"}
$File_Array_9HP48_start = $File_Array_9HP48 | % {$_+"*"}
$File_Array_9HP48X_start = $File_Array_9HP48X | % {$_+"*"}

$files = get-childitem $source -include $File_Array_8HP70_start -recurse 
$files1 = get-childitem $source -include $File_Array_8HP70X_start -recurse
$files2 = get-childitem $source -include $File_Array_9HP48_start -recurse          

1 个答案:

答案 0 :(得分:2)

您可以通过手动过滤忽略前N个字符:

get-childitem $source -recurse | where { $_.Name -like "???????108701*" }

如果你想通过这种方式枚举一系列模式,可以采用以下方法:

get-childitem $source -recurse | foreach {
  foreach($pattern in $likes) {
    if($_.Name -like $pattern) {
      $_
      break;
    }
  }
}