我需要得到包括所有属于特定类型出现在子文件夹中的文件的文件。
我做这样的事情,使用Get-ChildItem:
Get-ChildItem "C:\windows\System32" -Recurse | where {$_.extension -eq ".txt"}
然而,这只是我返回的文件名,而不是整个路径。
添加| select FullName
到您的线上方结束。如果您需要实际做的东西之后,你可能要管它变成一个foreach循环,就像这样:
get-childitem "C:\windows\System32" -recurse | where {$_.extension -eq ".txt"} | % {
Write-Host $_.FullName
}
[替代语法]
对于一些人来说,定向管道运营商都没有自己的口味,但他们宁可选择链接。查看此主题Roslyn的问题跟踪共享一些有趣的观点:dotnet/roslyn#5445。
根据情况和环境中,这种方法的一个可以被认为是隐式的(或间接)。例如,在这种情况下使用烟斗枚举需要特殊的记号$_
(又名PowerShell's "THIS" token
)可能会出现令人反感一些。
对于这样的小伙子们,这里是点链接做的更简洁,直接的方法:
(gci . -re -fi *.txt).FullName
(<咆哮>请注意,PowerShell的命令参数解析器接受部分参数名称所以除了-recursive
; -recursiv
,-recursi
,-recurs
,-recur
,-recu
,-rec
和-re
被接受,但不幸的是没有-r
..这是唯一正确的选择这是有道理的单-
字符(如果我们通过POSIXy UNIXy公约)!)
在PS中5,其中$ _不会的foreach内的完整路径真的很烦人的事情。这些都是FileInfo的和的DirectoryInfo对象的字符串版本。出于某种原因,在路径通配符修复它,或者在中间使用PS 6.你也可以管得到项目。
Get-ChildItem -path C:\WINDOWS\System32\*.txt -Recurse | foreach { "$_" }
Get-ChildItem -path C:\WINDOWS\System32 -Recurse | get-item | foreach { "$_" }
编辑:在路径不是通配符,在路径的时期!
我使用下面的脚本来提取所有的文件夹路径:
Get-ChildItem -path "C:\" -Recurse -Directory -Force -ErrorAction SilentlyContinue | Select-Object FullName | Out-File "Folder_List.csv"
完整的文件夹路径不来了。经过113个字符,是未来:
Example - C:\ProgramData\Microsoft\Windows\DeviceMetadataCache\dmrccache\en-US\ec4d5fdd-aa12-400f-83e2-7b0ea6023eb7\Windows...
这应该执行比使用后期过滤快得多:
Get-ChildItem C:\WINDOWS\System32 -Filter *.txt -Recurse | % { $_.FullName }
您还可以使用Select-Object像这样:
Get-ChildItem "C:\WINDOWS\System32" *.txt -Recurse | Select-Object FullName
这里有一个较短的一个:
(Get-ChildItem C:\MYDIRECTORY -Recurse).fullname > filename.txt
如果相对路径是你想要的,你可以只使用-Name
标志。
Get-ChildItem "C:\windows\System32" -Recurse -Filter *.txt -Name
Get-ChildItem -Recurse *.txt | Format-Table FullName
这是我用什么。我觉得这是更容易理解,因为它不包含任何循环语法。
尝试这个:
Get-ChildItem C:\windows\System32 -Include *.txt -Recurse | select -ExpandProperty FullName
这为我工作,并产生名称的列表:
$Thisfile=(get-childitem -path 10* -include '*.JPG' -recurse).fullname
我发现它使用get-member -membertype properties
,一个非常有用的命令。大多数的它给你的选项都附有一个.<thing>
,像fullname
就在这里。你能坚持同样的命令。
| get-member -membertype properties
在任何命令结束时得到的东西,你可以与他们以及如何访问这些操作的详细信息:
get-childitem -path 10* -include '*.JPG' -recurse | get-member -membertype properties
gci "C:\WINDOWS\System32" -r -include .txt | select fullname