Powershell模式匹配正则表达式

时间:2012-05-07 17:31:13

标签: regex powershell match

在我们的服务器上,我们有类似以下的文件:

C:\Documents and Settings\username\Application Data\Sun\Java\jre1.6.0_01\
C:\Documents and Settings\username\Application Data\Sun\Java\jre1.6.0_02\
C:\Documents and Settings\username\Application Data\Sun\Java\jre1.6.0_03\
etc

我们不再需要这些文件,因此我尝试编写一个powershell脚本来删除它们。现在我将自己限制在一个特定的服务器上,我有以下脚本:

 $path = "\\server\c$\Documents and Settings\"
 Get-ChildItem $path -Recurse | Where {$_.PSIsContainer -and ($_ -match '^jre1.6.0_')} | Remove-Item -Recurse -WhatIf

问题是我使用的模式似乎没有调用匹配,我不确定我做错了什么。我尝试了几种排列,但似乎都没有。任何正则表达的大师都可以说明我可能做错了吗?

由于 布拉德

2 个答案:

答案 0 :(得分:3)

试试这样:

Get-ChildItem $path -Recurse -Force | ....

-Force也会查找隐藏或系统文件/文件夹。

“应用程序数据”文件夹已隐藏!

答案 1 :(得分:1)

正则表达式没问题,我想你应该试试

$_.Name -match '^jre1.6.0_'

而不仅仅是

$_ -match '^jre1.6.0_'