Board logo

标题: [原创教程] PowerShell 技能连载 - 获取指定扩展名的文件 [打印本页]

作者: victorwoo    时间: 2014-8-17 20:38     标题: PowerShell 技能连载 - 获取指定扩展名的文件

原始链接:PowerShell 技能连载 - 获取指定扩展名的文件
发表日期:2014-08-15


适用于 PowerShell 所有版本

当您使用 `Get-ChildItem` 来获取一个文件列表时,您可能会注意到 `-Filter` 参数有时候会导致返回比你预期的更多的文件。

以下是一个例子。这段代码并不只是返回“.ps1”扩展名的文件,而也会返回“.ps1xml”扩展名的文件:
  1. Get-ChildItem -Path C:\windows -Recurse -ErrorAction SilentlyContinue -Filter *.ps1
复制代码
要限制只返回您需要的扩展名的文件,请用一个 cmdlet 来过滤结果:
  1. Get-ChildItem -Path C:\windows -Recurse -ErrorAction SilentlyContinue -Filter [i].ps1 [/i]
  2.   Where-Object { $_.Extension -eq '.ps1' }
复制代码
这将只返回您指定的扩展名的文件。


本文国际来源:Getting Files with Specific Extensions Only
作者: Linuxer    时间: 2014-8-20 10:13

  1. Where-Object { $_.Extension -eq '.ps1' }
复制代码
这里边的$_.Extension是什么意思呢?
版主,自动执行的又把斜体代码带出来了,
  1. [i].ps1 [/i]
复制代码
感觉这个比bat里的%~nxI要容易理解一些。。
作者: Linuxer    时间: 2014-8-20 10:39

回复 1# victorwoo


    懂了,原来就是代表扩展名的意思,,where就像数据库里的select一样,,,where-object从管道里查询指定内容。。
作者: 523066680    时间: 2014-8-20 11:04

回复 2# Linuxer


    好用是好用,就是整条语句加起来长了点。要是$_.Ext就简短咯
作者: CrLf    时间: 2014-8-20 18:30

个人认为与其用 where 不如用 -include '*.txt',无论可读性还是执行效率都是更优选择
  1. Get-ChildItem -Path C:\windows -Recurse -ErrorAction SilentlyContinue -Include '*.ps1'
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2