2015-09-05 37 views
0

我写了一个Windows PowerShell脚本工作,你可以在this thread中看到它的起源,它观察一个文件夹,并在.htm文件添加到文件夹时运行一个批处理文件。Powershell过滤器变量与通配符不工作

这一切工作正常,但我现在试图过滤哪种文件触发脚本。从一些事情我读过,这应该工作到包括到Z一开始只.htm文件:

$filter '[A-Z]*.htm' 

但是似乎匹配任何不。

我想排除这样的文件:

$filter = '*.htm' 

,并为工作正常,但我怎么排除:

~$abc.htm 

我现在都.htm文件匹配以~$开头的文件,即非字母字符?实际上,我想排除的那些总是以~$开头,如果更容易明确排除那些。

更新:

呃,好吧this page约PowerShell的似乎是,建议语法。这显然是一种不同的情况,但似乎也许这意味着PS会认识到这一点。我意识到语法是错误的,并且询问它应该是什么,换句话说,降低投票似乎有点奇怪。正如我写的,我想匹配到Z

具有启动这么清楚,这就是我的意思是由不匹配任何

.htm文件。

+0

*然而,它似乎并不匹配任何*如何命名'[A-Z] Something.htm'文件? – PetSerAl

+0

嗯,它会匹配的。我在JavaScript中使用了括号语法,但在这里显然是错误的。这似乎意味着该语法将在PowerShell中工作:https://technet.microsoft.com/en-us/library/Ee692793.aspx - 但我想不是。 – user3762977

回答

1

支持字符范围的参数不是Filter,而是参数PathFilter只支持基本的通配符匹配(*?

Get-ChildItem -Path '.\[A-Z]*.htm' 

应该做的伎俩

+0

太好了,非常感谢。 – user3762977