在PowerShell中解压缩并不清理临时文件

时间:2014-10-18 01:59:17

标签: powershell unzip temporary temp temporary-files

我一直在使用powershell函数来解压缩大量文件:

    function Expand-ZIPFile($file, $destination)
    {
      $shell = new-object -com shell.application
      $zip = $shell.NameSpace($file)
      foreach($item in $zip.items())
      {
        $shell.Namespace($destination).copyhere($item)
      }
    }

我用以下内容打电话:

Expand-ZIPFile -File "$dir\$zip_file" -Destination $work_dir

我在创建临时文件时发现了这个过程 C:\ Documents and Settings \ ftpuser \ Local Settings \ Temp

对于我解压缩的这些文件中的每一个,并且在过去一个月中它已经生成了接近800GB的临时文件。

问题:有没有办法

  1. 首先停止解压缩进程创建临时文件吗?
  2. 强制我的脚本在退出前清理这些文件?

2 个答案:

答案 0 :(得分:0)

懒惰的解决方案:

$temp = "C:\Documents and Settings\ftpuser\Local Settings\Temp\"
rm "$temp$($item.Title)"

答案 1 :(得分:0)

我的懒人解决方案(自动化):

    $temp_dir = "C:\Documents and Settings\ftpuser\Local Settings\Temp"
    $temp_listing = Get-ChildItem $temp_dir -include *zip -recurse -force | Select-Object Name
    if ( $temp_listing -ne $null ) {
      foreach ($item in $temp_listing) {
        $item -match "Name=(.+)}"
        $item = $Matches[1]
        Write-Host "Removing $temp_dir\$item"
        if (Test-Path -Path "$temp_dir\$item" -PathType Container)
        {
          Remove-Item "$temp_dir\$item" -recurse -force
        }
      }
    }

这样可以使脚本:

  1. 找到隐藏文件
  2. 未提示
  3. 仍然可以在计划任务中运行。
  4. 由于