2013-03-28 43 views
0

在PowerShell中,我正在寫一個腳本,使用'if'條件來檢查文件夾中最近2小時內收到的文件。該代碼工作正常,輸出寫入屏幕,而不是我想它寫入可以通過電子郵件發送的文件。 請求幫助。 問候 Abhijeetpowershell結果的'如果條件'寫入outfile

編輯:代碼

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

回答

1

你的代碼太複雜了。這樣的事情會更時髦:

$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 
+0

@ Ansgar output.txt返回的是ps文件名,它是check_last2_hrs1.ps1 ...而不是在過去2小時內創建的所需文件名 – 2013-03-28 12:24:39

+0

我只是對代碼進行了一些調整並再次檢查,它確實產生了在$ src目錄中最近2個小時內創建的文件。如果你得到不同的結果:顯示你現在使用的代碼。 – 2013-03-28 12:33:24

+0

我的錯誤,我保存並從被搜索的文件夾中運行腳本....腳本文件在過去2小時內被修改這就是它顯示腳本文件名稱的原因..實現並糾正它..Thnks a很多種類的支持.. – 2013-03-28 12:45:02

2

您可以使用重定向操作>Out-File

例子:

"abc" > c:\out.txt 

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

@ RB.thanks但>和出文件沒有給出任何輸出 – 2013-03-28 11:15:12

+0

代碼 $ F = 'd:\ USR \ for_check' $文件= LS $ f Foreach($ file in $ files){ $ createtime = $ file.CreationTime $ nowtime = get-date if(($ nowtime - $ createtime).totalhours -le 2) {「$ file」} } 給出正確的輸出,但在屏幕上..如果我{「$文件」| out-file d:\ usr \ aaa.out},這樣可以比較屏幕上的輸出 – 2013-03-28 11:22:33

1

您將要使用的>> OPER而不是>out-file運營商,因爲它們每次使用時都會覆蓋該文件。而運算符>>將寫入下一行的文件。

實施例:

$file >> c:\out.txt

+0

'>>'相當於'| Out-File -Append'。 – 2013-03-28 12:06:58

+0

+1。不知道Powershell中的「>>」。 – Neolisk 2013-03-28 12:28:48

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 
+0

@ mjolinor我試過了你給出的代碼,但'outfile.txt'包含這一行check_last2_hrs1.ps1 – 2013-03-28 12:23:17

+0

這是目錄中的文件之一嗎? – mjolinor 2013-03-28 12:36:06

+0

@ mjolinor找到原因..had保存並從目標文件夾中運行腳本文件,這只是在過去2小時內修改的文件,因此顯示文件名..thnks雖然善良的幫助.. :) – 2013-03-28 12:46:20