我正在尝试获取具有特定扩展名的所有文件的列表。
(...)$_.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
}
答案 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,无论是真还是假。
这些不在袖口,但应该让你朝着正确的方向前进。