Gag*_*gan 124 powershell powershell-2.0
我需要获取所有文件,包括属于特定类型的子文件夹中存在的文件.
我正在做这样的事情,使用Get-ChildItem:
Get-ChildItem "C:\windows\System32" -Recurse | where {$_.extension -eq ".txt"}
Run Code Online (Sandbox Code Playgroud)
但是,它只返回文件名而不是整个路径.
Chr*_*s N 189
添加| select FullName到上面的行的末尾.如果您之后需要实际执行某些操作,则可能必须将其传递到foreach循环中,如下所示:
get-childitem "C:\windows\System32" -recurse | where {$_.extension -eq ".txt"} | % {
Write-Host $_.FullName
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*evy 87
这应该比使用后期过滤快得多:
Get-ChildItem C:\WINDOWS\System32 -Filter *.txt -Recurse | % { $_.FullName }
Run Code Online (Sandbox Code Playgroud)
iml*_*esh 23
你也可以像这样使用Select-Object:
Get-ChildItem "C:\WINDOWS\System32" *.txt -Recurse | Select-Object FullName
Run Code Online (Sandbox Code Playgroud)
Jus*_*Guy 17
这是一个较短的一个:
(Get-ChildItem C:\MYDIRECTORY -Recurse).fullname > filename.txt
Run Code Online (Sandbox Code Playgroud)
如果您想要相对路径,您可以使用该-Name标志.
Get-ChildItem "C:\windows\System32" -Recurse -Filter *.txt -Name
我使用此行命令在“C:\Temp”中搜索“.xlm”文件,并将结果打印在文件“result.txt”中的全名路径:
(Get-ChildItem "C:\Temp" -Recurse | where {$_.extension -eq ".xml"} ).fullname > result.txt
Run Code Online (Sandbox Code Playgroud)
在我的测试中,这种语法对我来说很有效。
小智 7
尝试这个:
Get-ChildItem C:\windows\System32 -Include *.txt -Recurse | select -ExpandProperty FullName
Run Code Online (Sandbox Code Playgroud)
在 PS 5 中真的很烦人,其中 $_ 不会是 foreach 中的完整路径。这些是 FileInfo 和 DirectoryInfo 对象的字符串版本。出于某种原因,路径中的通配符可以修复它,或者使用 Powershell 6 或 7。您也可以通过管道连接到中间的 get-item。
Get-ChildItem -path C:\WINDOWS\System32\*.txt -Recurse | foreach { "$_" }
Get-ChildItem -path C:\WINDOWS\System32 -Recurse | get-item | foreach { "$_" }
Run Code Online (Sandbox Code Playgroud)
这似乎是 .Net 的一个问题,已在 .Net Core (Powershell 7) 中得到解决: FileInfo / Directory 实例的字符串化行为自 v6.0.2 以来已发生变化 #7132
Get-ChildItem -Recurse *.txt | Format-Table FullName
Run Code Online (Sandbox Code Playgroud)
那是我用的。我觉得它更容易理解,因为它不包含任何循环语法。
小智 5
这对我有用,并生成一个名称列表:
$Thisfile=(get-childitem -path 10* -include '*.JPG' -recurse).fullname
Run Code Online (Sandbox Code Playgroud)
我通过使用 找到了它get-member -membertype properties,这是一个非常有用的命令。它为您提供的大多数选项都附加了一个.<thing>,就像fullname这里一样。您可以坚持相同的命令;
| get-member -membertype properties
Run Code Online (Sandbox Code Playgroud)
在任何命令的末尾,以获取有关可以使用它们执行的操作以及如何访问这些操作的更多信息:
get-childitem -path 10* -include '*.JPG' -recurse | get-member -membertype properties
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
339587 次 |
| 最近记录: |