在powershell中,我正在使用“if”条件编写脚本来检查文件夹中是否存在过去2小时内收到的文件。代码工作正常,输出写入屏幕,而我希望它写入可以通过电子邮件发送的文件。 请求帮助。 问候 Abhijeet
编辑:代码
$f = 'D:\usr\for_check'
$files = ls $f
Foreach ($file in $files)
{
$createtime = $file.CreationTime
$nowtime = get-date
if (($nowtime - $createtime).totalhours -le 2)
{
"$file"
}
}
答案 0 :(得分:2)
答案 1 :(得分:1)
您需要使用>>
运算符代替>
或out-file
运算符,因为它们会在每次使用时覆盖该文件。而>>
运算符将在下一行写入文件。
示例:
$file >> c:\out.txt
答案 2 :(得分:1)
将每一行写入循环内的文件会导致大量磁盘I / O. 您可以将循环包装在脚本块中,然后在一次写入操作中将所有行输出到文件中。
$f = 'D:\usr\for_check'
$files = ls $f
&{Foreach ($file in $files)
{
$createtime = $file.CreationTime
$nowtime = get-date
if (($nowtime - $createtime).totalhours -le 2)
{
"$file"
}
}
} | set-content c:\outfile.tx
答案 3 :(得分:1)
你的代码太复杂了。像这样的东西会更像PoSh:
$src = "D:\usr\for_check"
$out = "C:\output.txt"
$append = $false
Get-ChildItem $src | ? {
$_.CreationTime -ge (Get-Date).AddHours(-2)
} | % { $_.Name } | Out-File $out -Append:$append