删除早于X天的文件:数据/日志文件的演示

时间:2014-05-26 11:57:15

标签: powershell

我是Powershell的新手,我创建的代码可以删除文件,如果超过" x"天。

我差不多完成了。需要您的帮助来表示我的日期(表格),如果没有文件将被删除,则不应生成日志文件。

这是我的代码:

$max_days = "-30"
$curr_date = Get-Date
$del_date = $curr_date.AddDays($max_days)
$Path = "C:\Desktop\Code"

$DateTime = Get-Date -Format "D=yyyy-MM-dd_T=HH-mm-ss"

$itemsearch = Get-ChildItem C:\Test -Recurse | Where-Object { $_.LastWriteTime -lt $del_date}

Foreach ($item in $itemsearch) 
{
    Write "File:", $item.Name "Modified:", $item.LastWriteTime "Path:", $item.FullName "Date Deleted:" $del_date | Out-File "C:\Desktop\Code\Deleted\SFTP_DeleteFiles_WORKSPACE_$DateTime.txt" -append
    $item | Remove-Item
}

任何人都可以帮助我吗?顺便说一句,它已经在工作了。

只需要以表格形式呈现数据,如果没有要删除的内容,就不要创建日志文件。

更新

已经通过以下方式解决了条件声明:

    if($itemsearch)
{
    Foreach ($item in $itemsearch) 
    {
        Write "File:", $item.Name "Modified:", $item.LastWriteTime "Path:", $item.FullName "Date Deleted:" $del_date | Out-File "C:\Desktop\Code\Deleted\SFTP_DeleteFiles_WORKSPACE_$DateTime.txt" -append
        $item | Remove-Item
    }
}

else
{
    Write "No files will be deleted."
}

谢谢!


我想在Excel /文本文件中显示它是这样的:

http://i59.tinypic.com/30wv33d.jpg

任何?


它给我带来了这个:

IsReadOnly;" IsFixedSize&#34 ;;" IsSynchronized&#34 ;;"键&#34 ;;"值&#34 ;;" SyncRoot上&#34 ;; "计数" 假;"假&#34 ;;"假&#34 ;;" System.Collections.Hashtable + KeyCollection&#34 ;;" System.Collections.Hashtable + ValueCollection&#34 ;; " System.Object的&#34 ;;" 4" 假;"假&#34 ;;"假&#34 ;;" System.Collections.Hashtable + KeyCollection&#34 ;;" System.Collections.Hashtable + ValueCollection&#34 ;; " System.Object的&#34 ;;" 4" 假;"假&#34 ;;"假&#34 ;;" System.Collections.Hashtable + KeyCollection&#34 ;;" System.Collections.Hashtable + ValueCollection&#34 ;; " System.Object的&#34 ;;" 4" 假;"假&#34 ;;"假&#34 ;;" System.Collections.Hashtable + KeyCollection&#34 ;;" System.Collections.Hashtable + ValueCollection&#34 ;; " System.Object的&#34 ;;" 4"

在Excel中。你有什么主意吗?我必须搜索它。

1 个答案:

答案 0 :(得分:0)

要介绍表格式日志记录,我会使用CSV文件作为输出,方法是用以下代码替换foreach块:

$results = @()

foreach ($item in $itemsearch) 
{
    $success = $true
    try
    {
        $item | Remove-Item
    }
    catch
    {
        $success = $false
    }

    if( $success -eq $true )
    {
        Write-Host $item.FullName 'successfully deleted.'
        $results += [PSCustomObject]@{'File'=$item.Name;'Modified'=$item.LastWriteTime;'Path'=$item.FullName;'Date Deleted'=$del_date;'State'='SUCCESS'}
    }
    else
    {
        Write-Host 'Error deleting' $item.FullName
        $results += [PSCustomObject]@{'File'=$item.Name;'Modified'=$item.LastWriteTime;'Path'=$item.FullName;'Date Deleted'=$del_date;'State'='ERROR'}
    }
}

$results | Export-Csv -Path "C:\Desktop\Code\Deleted\SFTP_DeleteFiles_WORKSPACE_$DateTime.csv" -Encoding UTF8 -Delimiter ';' -NoTypeInformation

首先创建一个空数组($ results)。

try / catch块用于检测删除是否成功,然后将相应的行添加到$ results。

最后,$ results数组将导出为CSV,其中包含&#39 ;;'分隔符,以便您可以使用Excel立即打开它。