Board logo

标题: [原创代码] PowerShell提取zip压缩包指定扩展名的文件 [打印本页]

作者: DAIC    时间: 2013-10-29 15:38     标题: PowerShell提取zip压缩包指定扩展名的文件

  1. #ERROR REPORTING ALL
  2. Set-StrictMode -Version latest
  3. #----------------------------------------------------------
  4. #STATIC VARIABLES
  5. #----------------------------------------------------------
  6. $ext = "xml"
  7. $dest = "D:\Test\bbb"
  8. $zips = "D:\Test\aaa"
  9. #----------------------------------------------------------
  10. #FUNCTION GetZipFileItems
  11. #----------------------------------------------------------
  12. Function GetZipFileItems
  13. {
  14.     Param([string]$zip)
  15.     $split = $split.Split(".")
  16.     $dest = $dest + "\" + $split[0]
  17.     If (!(Test-Path $dest))
  18.     {
  19.         Write-Host "Created folder : $dest"
  20.         $strDest = New-Item $dest -Type Directory
  21.     }
  22.     $shell = New-Object -Com Shell.Application
  23.     $zipItem = $shell.NameSpace($zip)
  24.     $items = $zipItem.Items()
  25.     GetZipFileItemsRecursive $items
  26. }
  27. #----------------------------------------------------------
  28. #FUNCTION GetZipFileItemsRecursive
  29. #----------------------------------------------------------
  30. Function GetZipFileItemsRecursive
  31. {
  32.     Param([object]$items)
  33.     ForEach($item In $items)
  34.     {
  35.         If ($item.GetFolder -ne $Null)
  36.         {
  37.             GetZipFileItemsRecursive $item.GetFolder.items()
  38.         }
  39.         $strItem = [string]$item.Name
  40.         If ($strItem -Match "\.$ext$")
  41.         {
  42.             If ((Test-Path ($dest + "\" + $strItem)) -eq $False)
  43.             {
  44.                 Write-Host "Copied file : $strItem from zip-file : $zipFile to destination folder"
  45.                 $shell.NameSpace($dest).CopyHere($item)
  46.             }
  47.             Else
  48.             {
  49.                 Write-Host "File : $strItem already exists in destination folder"
  50.             }
  51.         }
  52.     }
  53. }
  54. #----------------------------------------------------------
  55. #FUNCTION GetZipFiles
  56. #----------------------------------------------------------
  57. Function GetZipFiles
  58. {
  59.     $zipFiles = Get-ChildItem -Path $zips -Recurse -Filter "*.zip" | % { $_.DirectoryName + "\$_" }
  60.     ForEach ($zipFile In $zipFiles)
  61.     {
  62.         $split = $zipFile.Split("\")[-1]
  63.         Write-Host "Found zip-file : $split"
  64.         GetZipFileItems $zipFile
  65.     }
  66. }
  67. #RUN SCRIPT
  68. GetZipFiles
  69. "SCRIPT FINISHED"
复制代码
参考:
http://bbs.bathome.net/thread-26996-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2