0

powershell で、「if」条件を使用して、過去 2 時間に受信したファイルのフォルダーをチェックするスクリプトを作成しています。コードは正常に動作し、出力は画面に書き込まれます。代わりに、電子メールで送信できるファイルに書き込んでください。親切な助けを求める。よろしくアビジート

編集:コード

$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

4 に答える 4

2

リダイレクト演算子>またはOut-Fileのいずれかを使用できます

例:

"abc" > c:\out.txt

"abc" | Out-File c:\out.txt
于 2013-03-28T11:13:28.320 に答える
1

or演算子>>の代わりに演算子を使用すると、ファイルが使用されるたびにファイルが上書きされます。一方、オペレーターは次の行でファイルに書き込みます。>out-file>>

例:

$file >> c:\out.txt

于 2013-03-28T11:32:08.380 に答える
1

ループ内のファイルに各行を書き込むと、大量のディスク I/O が発生する可能性があります。スクリプト ブロックでループをラップし、1 回の書き込み操作ですべての行をファイルに出力できます。

$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
于 2013-03-28T11:42:30.387 に答える
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
于 2013-03-28T12:13:07.390 に答える