首先,我想为一个目录中的所有文本文件生成一个目录列表。接下来获取每个文本文件并获取内容。然后我想遍历内容并在另一个目录中搜索与第一个文件共享内容的所有文本文件,并将这些相应的匹配项输出到以源文件命名的文件中。
我对这一切都很陌生,意识到我缺少一些重要的基础知识。我在 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
- Next take each of those text files and get-contents.
- 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/