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



我正在编写一个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 
    }
}

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

任何帮助将不胜感激!

坚持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 "\BAAChomedir$usertransfer$(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资源管理器窗口到目标文件夹,该文件夹包含所有最近复制的文件和文件夹。

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

最新更新