【发布时间】:2022-06-23 13:38:40
【问题描述】:
我正在编写一个脚本,以根据字符串搜索从多个文件中输出一些数据。它输出找到的字符串,后跟以下六个字符。我可以让它在一个确切的位置工作。但是,我想搜索路径中多个子文件夹内的文件。使用下面的脚本,我得到 PermissionDenied 错误...
[regex] $pattern = '(?<=(a piece of text))(?<chunk>.*)'
Get-Content -Path 'C:\Temp\*' |
ForEach-Object {
if ($_ -match $pattern) {
$smallchunk = $matches.chunk.substring(0, 6)
}
}
"$smallchunk" | Out-File 'C:\Temp\results.txt'
如果我将-Path 更改为其中一个子文件夹,它可以正常工作,但我需要它进入每个子文件夹并执行获取内容。
例如,看看里面...
C:\Temp\folder1\*
C:\Temp\folder2\*
C:\Temp\folder3\*
等等……
【问题讨论】:
-
您可能想看看Select-String。该文档提供了一些示例,说明如何在多个文件和子文件夹中进行搜索。
-
也许
Get-ChildItem -Path C:\temp\ -Filter *.txt -File -Recurse | ForEach-Object { $PSItem | Get-Content }? -
@JoseFz 我应该在该代码中的哪个位置放置搜索字符串“一段文本”?
-
在
Get-Content之后继续使用您的管道。顺便说一句,代码(原样)也采用C:\Temp\results.txt文件……我将开始使用Get-ChildItem -Path C:\temp\ -Filter *.txt -File -Recurse | ForEach-Object { $PSItem.FullName}来查看详细信息。
标签: powershell