[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创教程] 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
PowerShell 群:271143343

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

TOP

回复 1# victorwoo


    懂了,原来就是代表扩展名的意思,,where就像数据库里的select一样,,,where-object从管道里查询指定内容。。

TOP

回复 2# Linuxer


    好用是好用,就是整条语句加起来长了点。要是$_.Ext就简短咯

TOP

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

TOP

返回列表