Powershell-循环故障
首先,我想为目录中的所有文本文件生成一个目录列表。接下来,获取每个文本文件并获取内容。然后,我要遍历这些内容,并在另一个目录中搜索与第一个文件共享内容的所有文本文件,并将这些对应的匹配项输出到以源文件命名的文件中 我对这一切都很陌生,我意识到我遗漏了一些重要的基础知识。我仅有的一点脚本编写经验是Javascript,它似乎并不完全可移植。(有人告诉我,编程就是编程。) 这就是我到目前为止所做的:Powershell-循环故障,powershell,Powershell,首先,我想为目录中的所有文本文件生成一个目录列表。接下来,获取每个文本文件并获取内容。然后,我要遍历这些内容,并在另一个目录中搜索与第一个文件共享内容的所有文本文件,并将这些对应的匹配项输出到以源文件命名的文件中 我对这一切都很陌生,我意识到我遗漏了一些重要的基础知识。我仅有的一点脚本编写经验是Javascript,它似乎并不完全可移植。(有人告诉我,编程就是编程。) 这就是我到目前为止所做的: $max = get-content h:test1\one.txt | Measure-Objec
$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')
}
非常感谢您的任何帮助
库尔蒂斯
所以
第1册(1.txt)
法国的首都是巴黎。巴黎的人口是十二 第二册(two.txt) 法国是一个美丽的国家。
法国的首都是巴黎 我基本上想要一份关于two.txt与one.txt共享一行的报告 首先,我想为目录中的所有文本文件生成一个目录列表 以下是方法:
$textFiles1 = dir -Path C:\Books1 -Filter *.txt
$textFiles2 = dir -Path C:\Books2 -Filter *.txt
好的,让我们来分析一下: 首先,我想为目录中的所有文本文件生成一个目录列表。接下来,获取每个文本文件并获取内容 然后我想浏览内容并搜索所有文本文件 在与第一个文件共享内容的另一个目录中 好的,现在我们通过管道将所有文本传输到
选择字符串(首先用过滤掉所有空字符串?{$}
:
dir *.txt | get-content | ?{$_} | %{select-string -path searchPath\*.txt -pattern "$_" -simple}
并将这些对应的匹配项输出到以
源文件
所以现在变得很棘手,因为我们必须返回并跟踪源文件名,我们通过将查询包装在foreach中来实现这一点(即%{}
):
当你说共享内容时,你的意思是相同的文件吗?或者仅仅是它们的部分内容是相同的?它们的部分内容是相同的。所以全行匹配就足够了?全行就行了。哈哈,在一个理想的世界里,它实际上是句子,但我不知怎么地认为这会使问题复杂化:P在b处被极化原始问题的奥托姆。哈哈,我还没有掌握这个界面的窍门。对不起:P@KurtisStaples-国王,我更新了我的答案。试试看……你必须修好通往你想要的道路当然……爱死它!我会投赞成票,但我的名声不好:P@KurtisStaples-King修复了管道获取内容的问题。它现在可以工作:-)这太完美了!非常有用。多谢各位。
dir *.txt | get-content
dir *.txt | get-content | ?{$_} | %{select-string -path searchPath\*.txt -pattern "$_" -simple}
dir *.txt | %{ $sourceFile = $_; get-content $_ | ?{$_} | %{select-string -path searchPath\*.txt -pattern "$_" -simple} | out-file "$sourceFile.results" }