Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 搜索时的文件扩展名_Powershell_Console - Fatal编程技术网

Powershell 搜索时的文件扩展名

Powershell 搜索时的文件扩展名,powershell,console,Powershell,Console,我正在尝试获取具有特定扩展名的所有文件的列表 (...)$_.Extension -eq ".$ext" 我将扩展从控制台读取到脚本 我的问题是如何找到扩展名为*的文件 编辑: 下面是代码的其余部分: $setOfFolders = (Get-ChildItem -Path D:\ -Directory).name Write-host "Set last write date " -ForegroundColor Yellow -NoNewline $ostZmiana= read-ho

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

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

$\扩展名
将文件视为(对于文本文件)
.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}
它的计算结果为布尔值,无论是真是假


这些都是现成的,但应该可以让您朝着正确的方向前进。

您也可以在get ChildItem上使用-filter:

Get ChildItem-过滤器“*.txt”

您也可以指定递归:


Get ChildItem-Recurse-Filter“*.txt”

您需要添加更多实际代码,让人们帮助您完成所需的任务。有很多方法可以满足您的要求,但很难从您的问题开始提供帮助。其余代码:$setOfFolders=(Get ChildItem-Path D:\-Directory)。name Write host“Set last Write date”-ForegroundColor Yellow-NoNewline$ostZmiana=读取主机$ext=读取主机“Set extensions”ForEach($f in$setOfFolders){$saveTofile=“C:\Users\pziolkowski\Desktop\Outs\$f.txt”获取ChildItem-Path D:\Urzad\Wspolny\$f-Recurse |?{$$$.LastAccessTime-lt$ostZmiana-和$.Extension-eq.$extensi}{Get acl$.FullName}}排序所有者| ft-AutoSize-Wrap所有者,@{Label=“ShortPath”表达式=${.Path.Substring(38)}$saveTofile}编辑您的问题以添加代码,注释不是放在代码中的位置。谢谢谢谢谢谢Hanks:)但您说过如何查找specyfic扩展名,但我需要添加任何(如file.log和file.jpg)文件。*然后更新您的问题,我将更新答案。当前,您从
开始,我正在尝试获取具有特定扩展名的文件列表。
测试后,似乎筛选文件扩展名的
-Filter“*.txt”
-Include*.txt
快得多。谢谢你的提示!这实际上与扩展不匹配。它还匹配“Filename.txt skip”!