powershell复制磁盘,不包括特定文件类型

时间:2014-03-26 20:44:11

标签: file powershell copy

我正在开发一个PowerShell 2脚本,它将读取CD-ROM或DVD磁盘并复制其内容 - 需要注意的是,我需要检查某些文件类型,而不是使用该文件类型复制任何内容。到目前为止,我有这个工作:

$user = read-host "Enter owner's username:"
$drv = read-host "Enter Optical Drive letter (no colons or slashes):"

$list = Import-Csv badtypes.csv
$badlist = @()
$Extns = @()

ForEach($xt in $list)
{
    $Extns += "."_$xt.Extention
}

$filepath = $drv +":\"
$cnts = Get-ChildItem $filepath -r

ForEach($itm in $cnts)
{
   if($itm.PSis.Container)
   {
       #write new folder name in user's temporary folder
   }
   else
   {
       CheckFile $itm
   }
}

Function CheckFile($fl)
{
    $fildextension = [System.IO.Path]::GetExtention($fl)

    $badfound = 0

    ForEach($a in $Extns)
    {
        if($a -eq $fildextension)
        {
           $badfound = 1
        }
    }

    if(badfound -eq 0)
    {
       write-host "File Type Acceptable:" $fl
       # write file to proper place in the user's temporary folder 
    }
}

我在正确的位置创建一个空文件夹并将(可接受的)文件复制到正确的位置时遇到问题。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

坚持使用PowerShell解决方案,试试这个尺寸:

$user = read-host "Enter owner's username:"
$drv = read-host "Enter Optical Drive letter (no colons or slashes):"

$list = Import-Csv badtypes.csv
$Exclusions = "*.$($list.Extension -join ",*.")"
$DestFolder = New-Item -path "\\BAAC\homedir\$user\transfer\$(get-date -f MMddyyyy.HH.mm)"  -ItemType Directory
$FilePath = $drv +":\"

Write-Host "Copying files from $FilePath to $DestFolder`:"

Copy-Item "$FilePath*" -Destination $DestFolder -Exclude $Exclusions -Recurse -PassThru
explorer $DestFolder

不需要用户的名字,但我把它留在了那里。以下是脚本的用途:

  • 获取驱动器号
  • 导入要排除的扩展名列表,从中构建一个字符串(如果您的CSV有3个条目是bat,exe和com,则结果字符串将类似于“*.bat,*.exe,*.com”。
  • 在所需文件夹
  • 中创建日期/时间格式文件夹
  • 然后它递归地将文件和文件夹复制到新文件夹,不包括排除列表中的任何内容。
  • 最后,它打开了一个Windows资源管理器窗口,指向创建的目标文件夹,其中包含所有最近复制的文件和文件夹。

编辑:已更新以使用注释中指定的路径。如果此答案为您的问题提供了解决方案,请将其标记为所选答案,以便将来的用户可以找到并使用它而无需重复提问。