【问题标题】:Extract content from multiple txt files, then save files based on folder.filename从多个txt文件中提取内容,然后根据folder.filename保存文件
【发布时间】:2015-12-10 00:01:39
【问题描述】:

我需要搜索然后从多个 txt 文件中提取内容,然后将每个搜索结果保存到单独的 txt 文件中,例如serverabc.systeminfo.txt.

以下内容有效,但是它将所有结果返回到单个 systeminfo.txt 文件,该文件未列出结果来自哪个文件夹/文件。

理想情况下,我需要为每个系统信息提取提供一个文件输出。在提取的文件夹中有多个文件夹,即 abc123、def456 等。每个文件都需要在 systeminfo 文件中搜索“abc 软件”或“def 软件”,然后如果找到输出结果为单个文本文件,即 abc123.systeminfo 等.

保存这些文件后,它们将与master.txt 文件进行比较,以了解差异。

$path = "H:\Compare\Extracted"
$Text = "abc Software"
$Text2 = "def Software"
$Results = "H:\Compare\Results\$($file.name).txt"
$files = Get-ChildItem $path -recurse -Include *.txt

foreach ($file in $files) {
    Get-Content $file |
       Select-String -Pattern $Text, $Text2 |
       select line |
       Out-File $Results -Append
}

【问题讨论】:

    标签: powershell


    【解决方案1】:

    变量$fileforeach 循环之外(尤其是之前)未知。将$Results 的定义放在循环中,代码应该可以工作。另外,我认为您应该将-Expand 添加到select 语句以扩展Line 属性。

    foreach ($file in $files) {
        $Results = "H:\Compare\Results\$($file.Directory.Name + '.' + $file.Name).txt"
        Get-Content $file |
            Select-String -Pattern $Text, $Text2 |
            select -Expand Line |
            Out-File $Results -Append
    }
    

    如果您希望创建的输出文件不包含源文件的扩展名,请使用 $file.BaseName 而不是 $file.Name

    【讨论】:

    • 嗨,这仍然将所有结果返回到单个文件?我需要在 H:\compare\extracted 目录中的所有 txt 文件中搜索文本字符串并将结果返回到 H:\compare\results\foldername.filename 找到的每个文件?
    • @dragonhsv 我严重怀疑您是否会在一个输出文件中获得所有结果,除非您只有一个文件显示匹配项,或者您有多个同名文件。请提供证据。要在输出文件名中包含文件夹名称,请参阅更新的答案。
    • 谢谢你,很抱歉造成混乱,我的错误你是正确的所有文件名都是相同的只是不同的文件夹,即服务器名是“abc123”文件名都是“systeminfo.txt”谢谢
    • @dragonhsv 那么,更新后的答案能解决您的问题吗?如果是,请考虑accepting it。如果没有,请解释仍然无法按预期工作的原因。
    • 感谢您的提示,我现在已将此添加到脚本中以重命名所有文件,现在它可以工作了。 Get-ChildItem "H:\Compare\Extracted" -Filter *.txt -Recurse | Rename-Item -NewName { $_.Directory.Name+'_'+$_.Name} 再次感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多