【发布时间】:2021-02-20 23:29:46
【问题描述】:
我有一个包含一堆 .txt 文件的文件夹。我想遍历它们并检查它们是否包含存储在字符串数组中的关键字。如果找到一个匹配项,我想将文件存储在以匹配项命名的新文件夹中。例如,我正在检查“OVERTIME”这个词是否在我的一个文本文件中;如果找到匹配项,我想将文件保存在名为“OVERTIME”的新文件夹中。我打算使用 move-item 将文件从当前文件夹移动到新文件夹,这样文件就会从旧文件夹中删除。以下是我的初始代码;我不确定如何设置嵌套循环以及如何检查是否存在匹配项。
$reports_name = @('MYTIME','NOTIME','OVERTIME')
Get-ChildItem "C:\Users\My_User\Desktop\test" -Filter *.txt |
Foreach-Object {
$content = Get-Content $_.FullName
foreach($line in $content) {
if($line -in $reports_name){
move-item $content -Destination C:\Users\My_User\Desktop\$line
}
}
【问题讨论】:
-
将
Move-Item $content更改为Move-Item $_.Fullname。您将文件的内容传递给movecmdlet -
如果一个文件包含多个匹配项怎么办?第一个匹配的词得到文件,这是你需要担心的吗?
-
该文件只包含一个匹配项(即“OVERTIME”),它可能出现多次,但它始终只是数组中列出的字符串之一。
标签: powershell nested-loops string-matching