powershell的'if condition'结果写入outfile

时间:2013-03-28 11:12:09

标签: powershell

在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"
    } 
}

4 个答案:

答案 0 :(得分:2)

您可以使用重定向运算符>Out-File

示例:

"abc" > c:\out.txt

"abc" | Out-File c:\out.txt

答案 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