【发布时间】:2017-12-10 00:37:12
【问题描述】:
嘿,我是 PowerShell 的新手,我正在尝试创建电影传输脚本。我创建了一个脚本,它将列出我的电影文件夹中的子项目并将它们转储到 .csv。然后,最终用户将能够选择 .csv 中的文件并将“y”放在另一列中。然后,我将运行 Powershell 脚本以使用“y”列过滤掉他们的选择,并将项目比较并复制到单独的文件夹/驱动器。
在将 .csv 文件与保存电影的原始文件夹进行比较,然后将它们复制到另一个文件夹时,我遇到了一些问题。我的脚本一次只能使用 [0] 等查找和复制一个数组项。
这是我的 export-csv 脚本(没有问题)和我的复制项脚本(有问题)的示例
EXPORT-CSV.ps1
$Movies = "D:\Media\Movies"
Get-ChildItem $Movies | select name,y | Export-Csv D:\Media\Media_Scripts\Movies.csv -NoTypeInformation
以及输出 .csv 文件的图像
COPY-ITEM.ps1 有效,但仅当我在 $csv_name 之后的 [] 中添加单个数组编号时。这并不理想,因为我想递归并将所有选定的文件夹复制到新位置
$Csv_loc = "D:\Media\Media_Scripts\"
$Movies_loc = "D:\Media\Movies\"
$Test = "D:\Media\Media_Scripts\Test\"
$csv = Import-Csv "$csv_loc\Movies.csv" | Where-Object{$_.y -eq "y"} | select name
$csv_name | foreach($_)
{
Get-ChildItem $movies_loc | Where-Object {$_.Name -contains $csv_name[0]} | copy-item -Destination $Test -Recurse -Verbose
}
【问题讨论】:
-
$csv_name为空。你永远不会给它分配任何东西。您还可以创建带有双反斜杠的路径。使用Join-Path可以避免此类错误。而且你用foreach错了。 -
谢谢伙计,很抱歉我的变量写错了(本来应该是 $csv)
-
您需要编辑您的问题以反映 Swonkie 指出的更正。你的 foreach($_) 对我来说也很不清楚。您是否正在尝试使用百分号编写的结构?
标签: powershell csv get-childitem import-csv