我正在收集有关电子邮件的数据并导出为CSV。在脚本的这一部分中,我需要生成一个文本文件,该文本文件将在CSV文件中变为2列。第一列(电子邮件主题行文本)已存在于文本文件中,我需要在文件的每一行中添加以下内容:哈希标记加上文件名的一部分加上哈希标记。标签是我对CSV文件的定界符。
在我的第一个ForEach循环中,我遍历文件夹以生成文件名列表,然后拆分为所需的部分名称。这有效。然后,在第二个ForEach循环中,我尝试遍历文件夹中的文件,并将适当的文件名部分添加到每一行。与其仅附加一个相关的文件名部分,不如将所有文件名附加到每一行。
这是文件“Inbox_Subject_Reports&Timekeeping.txt”中当前数据的示例:
所需的输出:
Re: your weekly business reports#Reports & Timekeeping.txt#
Re: submission of timesheet#Reports & Timekeeping.txt#
但是在同一文件夹中还有其他文件,因此我得到了所有文件名,并且数据正在复制4次:Re: your weekly business reports#Reports & Timekeeping.txt#Fourth Quarter Returns#
Re: submission of timesheet#Reports & Timekeeping.txt#Fourth Quarter Returns#
Re: your weekly business reports#Reports & Timekeeping.txt#Fourth Quarter Returns#
Re: submission of timesheet#Reports & Timekeeping.txt#Fourth Quarter Returns#
Re: your weekly business reports#Reports & Timekeeping.txt#Fourth Quarter Returns#
Re: submission of timesheet#Reports & Timekeeping.txt#Fourth Quarter Returns#
Re: your weekly business reports#Reports & Timekeeping.txt#Fourth Quarter Returns#
Re: submission of timesheet#Reports & Timekeeping.txt#Fourth Quarter Returns#
是我的ForEach循环的嵌套吗?我需要某种“休息”功能吗?我喜欢PowerShell,并且能够做很多事情,但是我在这里所掌握的知识有限。我宁愿学习如何正确执行此操作,也不要创建麻烦的解决方法。这是脚本部分:
$dir = "$Filelocation\Inbox_Subfolders\"
$filelist = @(Get-ChildItem $dir)
ForEach ($file in $filelist){
$folder = $file.Name.Split("_")[2]
}
{
$TextToAdd = "#" + $folder + "#"
$output = @()
$fileContent = Get-Content "$Filelocation\Inbox_Subfolders\Inbox_Subject_*.txt"
}
ForEach ($line in $filecontent){
$output += $line + $TextToAdd
$output | Set-Content "$Filelocation\Inbox_Subfolders\Inbox_Subject_*.txt"
}
我花了几天的时间来找出嵌套的ForEach循环以及我要去哪里的问题。我愿意以不同的方式取得相同的结果。任何帮助是极大的赞赏。 最佳答案
首先:使用适当的缩进。这将使您更容易查看嵌套代码块的开始和结束位置。
这是您想要的吗?
$dir = "$Filelocation\Inbox_Subfolders"
Get-ChildItem $dir -Filter *.txt | foreach {
$folder = $_.Name.Split("_")[2]
$TextToAdd = "#" + $folder + "#"
(Get-Content $_.FullName) | foreach {
$_ + $TextToAdd
} | Set-Content $_.FullName
}
关于powershell - PowerShell嵌套ForEach循环的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64576729/