搜索时的文件扩展名

时间:2013-09-18 11:30:23

标签: powershell console

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

(...)$_.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 
}

2 个答案:

答案 0 :(得分:8)

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

Get-ChildItem -Filter "*.txt"

你也可以指定递归:

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

答案 1 :(得分:5)

$_.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}

这评估为bool,无论是真还是假。

这些不在袖口,但应该让你朝着正确的方向前进。