我正在开发一个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
}
}
我在正确的位置创建一个空文件夹并将(可接受的)文件复制到正确的位置时遇到问题。
任何帮助将不胜感激!
答案 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
不需要用户的名字,但我把它留在了那里。以下是脚本的用途:
*.bat,*.exe,*.com
”。编辑:已更新以使用注释中指定的路径。如果此答案为您的问题提供了解决方案,请将其标记为所选答案,以便将来的用户可以找到并使用它而无需重复提问。