Powershell - 循环问题

标签 powershell

首先,我想为一个目录中的所有文本文件生成一个目录列表。接下来获取每个文本文件并获取内容。然后我想遍历内容并在另一个目录中搜索与第一个文件共享内容的所有文本文件,并将这些相应的匹配项输出到以源文件命名的文件中。

我对这一切都很陌生,意识到我缺少一些重要的基础知识。我在 Javascript 中的脚本编写经验似乎并不完全可以转移。 (虽然有人告诉我编程就是编程。)

这是我目前所拥有的:

$max = get-content h:test1\one.txt | Measure-Object
$A = get-content h:test1\one.txt
For($i=0; $i -lt $max.count ; $i++){
    select-string h:test2\*.txt -pattern $($A[$i]) | Format-Table | Out-File ($i + '.txt')
    }

我希望是这样的:

$max = get-content $files[i] | Measure-Object
    $A = get-content files[i]
    For($j=0; $j -lt $max.count ; $j++){
        select-string h:test2\*.txt -pattern $($A[$j]) | Format-Table | Out-File($files[i].basename + $j + '.txt')
    }

我们将不胜感激任何帮助,

柯蒂斯

所以

第一册(one.txt)

法国的首都是巴黎。
巴黎的人口是十二。

第二册(two.txt)

法国是一个美丽的国家。
法国的首都是巴黎。

我基本上想要一份关于 two.txt 与 one.txt 共享一行的报告。

最佳答案

First I would like to generate a directory listing for all text files in a directory

方法如下:

$textFiles1 = dir -Path C:\Books1 -Filter *.txt
$textFiles2 = dir -Path C:\Books2 -Filter *.txt
  1. Next take each of those text files and get-contents.
  2. I want to see whether any lines from the first book are in any of the other books.

这是执行此操作的算法(未测试)(已测试):

foreach ($textFile in $textFiles1) {
    $lines = get-content -Path $textFile
    foreach ($line in $lines) {
        foreach ($textFile2 in $textFiles2) {
            $lines2 = get-content -Path $textFile2 
            if ($lines2 -contains $line) {
                $matchMessage = 'Line: "{0}" is duplicated in "{1}".' -f $line, $textFile2
                $matchMessage | out-file C:\report.txt -encoding UTF8 -Append
            }
        }
    } 
}

notepad C:\report.txt

关于Powershell - 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9317479/

相关文章:

正则表达式特定的重复间隔解析器,主要工作

powershell - 在 if block 中无法识别 $Env 变量

powershell -> 运算符和 Set-Content cmdlet 之间有什么区别

git - 如何进行git克隆并进入创建的目录

perl - Powershell是否在Perl中具有像binmode这样的功能?

arrays - 使用带有 Where 子句的 powershell 选择 XML 节点

powershell - Dynamics CRM导出解决方案(非本地)

PowerShell 安全扩展任意字符串中的非打印字符

powershell - 两个相同的日期时间不相等

powershell 为异步调用抛出 PipelineStoppedException