读取多个文本文件并通过电子邮件发送给收件

时间:2016-03-08 17:11:52

标签: powershell text-files file-get-contents

我对powershell很新,所以如果不清楚,请原谅我这样说的方式。

我有powershell命令,它将读取文本文件中的一行并通过电子邮件发送给收件人。 正如你在下面的代码中看到的那样,它正在寻找一个具有“ama”的文件 - 它做得很好。

但是,有时目录中有多个文件,文件名中包含“ama”。我希望它为每个名称中包含“ama”的文件发送电子邮件。每个文件的单独电子邮件,或者在目录中所有“ama”文件中读取相同行的摘要。

可以这样做吗?

非常感谢。

$a=Get-Content -Path "S:\Vecta\Test\*ama.*" | select -first 1 -skip 9 
$a = $a.substring(3,16)
$b = "Imported"
$msg.Body=$a

#$msg.Body=Get-Content -Path "S:\Vecta\Test\*ama.*" | select -first 1 -skip 9 |  Out-String 

#Message Subject
$msg.Subject=$b

$smtp.Send($msg)
#$attachment.Dispose();
$msg.Dispose();

1 个答案:

答案 0 :(得分:0)

编辑:

设定:

PS S:\vecta\test> "testa" >aama.txt
PS S:\vecta\test> "testb" >bama.log
PS S:\vecta\test> "testc" >cama.csv
PS S:\vecta\test> ls


    Directory: S:\vecta\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       08.03.2016     19:11             16 aama.txt
-a----       08.03.2016     19:11             16 bama.log
-a----       08.03.2016     19:11             16 cama.csv

PS S:\vecta\test> $files = Get-ChildItem -Path "S:\Vecta\Test\*ama.*"
PS S:\vecta\test> $files.count
3

PS S:\vecta\test> foreach($file in $files){$a = get-content $file; "$file=$a"}
S:\Vecta\Test\aama.txt=testa
S:\Vecta\Test\bama.log=testb
S:\Vecta\Test\cama.csv=testc

正如您所看到的,代码可以正常运行。

只需循环浏览文件:

$files = Get-ChildItem -Path "S:\Vecta\Test\*ama.*" 

foreach($file in $files)
{
    $a = Get-Content $file | select -first 1 -skip 9 

    # your email logic

}