Powershell 获取子项文件名掩码
Powershell get childitem filename masks
我正在编写一个脚本,该脚本遍历包含多个 .pdf 文件的文件夹。只有当文件名符合两个掩码之一时,Powershell 才应继续执行某些步骤。否则它应该继续搜索下一个适合掩码的文件。
我用过:
Get-ChildItem $PATH -Filter "*TEXT-TXT-*" -Recurse -Force |Foreach-Object {
write-host $_.Name
但是这个过滤器只是硬编码的。如何使用口罩,最好使用两个口罩作为过滤器?口罩应该是:
- "##-##-#### XXXX-XXX-XXXX-XX.PDF"
- "##-##-#### XXXX-XXX-XXX-XXXX-XX.PDF"
其中 # 是任何数字,X 是任何非数字字符。
希望这是可能的。
为此你可以使用正则表达式,通过"or"向它们添加几个条件,例如如下
Get-ChildItem $PATH -Filter "*TEXT-TXT-*" -Recurse -Force|Where-Object {($_.name -match '\d{2}-\d{2}-\d{4} \w{4}-\w{3}-\w{3}-\w{4}-\w{2}.PDF') -or($_.name -match '\d{2}-\d{2}-\d{4} \w{4}-\w{3}-\w{4}-\w{2}.PDF')}
在这个表达式中,用管道传输的文件名代替即可
我正在编写一个脚本,该脚本遍历包含多个 .pdf 文件的文件夹。只有当文件名符合两个掩码之一时,Powershell 才应继续执行某些步骤。否则它应该继续搜索下一个适合掩码的文件。
我用过:
Get-ChildItem $PATH -Filter "*TEXT-TXT-*" -Recurse -Force |Foreach-Object {
write-host $_.Name
但是这个过滤器只是硬编码的。如何使用口罩,最好使用两个口罩作为过滤器?口罩应该是:
- "##-##-#### XXXX-XXX-XXXX-XX.PDF"
- "##-##-#### XXXX-XXX-XXX-XXXX-XX.PDF"
其中 # 是任何数字,X 是任何非数字字符。
希望这是可能的。
为此你可以使用正则表达式,通过"or"向它们添加几个条件,例如如下
Get-ChildItem $PATH -Filter "*TEXT-TXT-*" -Recurse -Force|Where-Object {($_.name -match '\d{2}-\d{2}-\d{4} \w{4}-\w{3}-\w{3}-\w{4}-\w{2}.PDF') -or($_.name -match '\d{2}-\d{2}-\d{4} \w{4}-\w{3}-\w{4}-\w{2}.PDF')}
在这个表达式中,用管道传输的文件名代替即可