搜索时的文件扩展名

paw*_*_86 5 console powershell

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

(...)$_.Extension -eq ".$ext"
Run Code Online (Sandbox Code Playgroud)

我读了从控制台到脚本的扩展.

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

编辑:

这是代码的其余部分:

$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 
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ake 8

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

Get-ChildItem -Filter "*.txt"

你也可以指定递归:

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


Aus*_*nch 5

$_.Extension会看到文件,(在一个文本文件的情况下).txt

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

在PowerShell中获取具有特定扩展名的文件列表的最简单方法是两个中的一个,真的.

C语法:

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

PowerShell风格:

Get-ChildItem | Where-Object {$_.Extension -eq ".txt"} | Do stuff
Run Code Online (Sandbox Code Playgroud)

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

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

Get-ChildItem | Where-Object {$_.Extension}
Run Code Online (Sandbox Code Playgroud)

这评估为bool,如此真或假.

这些都是袖口,但应该让你朝着正确的方向前进.