7

我正在尝试获取具有特定扩展名的所有文件的列表。

(...)$_.Extension -eq ".$ext"

我从控制台读取扩展名到脚本。

我的问题是如何找到任何扩展名为 .*?

编辑:

这是其余的代码:

$setOfFolders = (Get-ChildItem -Path D:\ -Directory).name 
Write-host "Set last write date " -ForegroundColor Yellow -NoNewline 
$ostZmiana= read-host $exten = read-host "Set extensions " 

ForEach ($f in $setOfFolders) 
{ 
    $saveTofile = "C:\Users\pziolkowski\Desktop\Outs\$f.txt" 
    Get-ChildItem -Path D:\Urzad\Wspolny\$f -Recurse | ? {$_.LastAccessTime -lt $ostZmiana -and $_.Extension -eq ".$exten"} | % {Get-acl $_.FullName} |sort Owner | ft -AutoSize -Wrap Owner, @{Label="ShortPath"; Expression= $_.Path.Substring(38)}} > $saveToFile 
}
4

2 回答 2

10

您还可以在 Get-ChildItem 上使用 -filter:

Get-ChildItem -Filter "*.txt"

你也可以指定递归:

Get-ChildItem -Recurse -Filter "*.txt"

于 2014-08-13T08:31:17.093 回答
9

$_.Extension文件视为,(在文本文件的情况下).txt

如果$ext当前是一个有效的扩展,那么.$ext看起来就像..txt回显了。

在 PowerShell 中获取具有特定扩展名的文件列表的最简单方法实际上是两种方法之一。

类似 C 的语法:

$myList
Get-ChildItem |`
    Foreach-Object {
    if ($_.Extension -eq ".txt") { $myList += $_}
    }

PowerShell 风格:

Get-ChildItem | Where-Object {$_.Extension -eq ".txt"} | Do stuff

要获取所有文件,因为大多数文件都有扩展名,只需使用 Get-ChildItem 或 GCI 或 ls。(GCI 和 LS 是 Get-ChildItem 的别名)。

要获取所有带有扩展名但不是特定扩展名的文件:

Get-ChildItem | Where-Object {$_.Extension}

这评估为布尔值,因此为真或假。

这些都是即兴的,但应该让你朝着正确的方向前进。

于 2013-09-18T13:38:38.847 回答