我在完成PowerShell脚本时遇到了一些麻烦。我有一个程序将图像下载到一个临时文件夹,然后在一个小时内它将删除图像文件。偶尔我想保留一些文件,所以我正在创建一个powershell脚本,将图像文件从临时文件夹复制到一个新文件夹,以便我可以对它们进行排序并保留我想要的内容。
在网上搜索时,我在TomsITpro上找到了“如何使用PowerShell同步文件夹”的脚本。此脚本在两个文件夹之间双向复制文件。当我尝试修改它只复制一种方式时,我收到了PowerShell错误。
$DownloadFolder = 'D:\TempImages'
$KeepFolder = 'D:\KeepImages'
$DownloadFiles = Get-ChildItem -Path $DownloadFolder
$KeepFiles = Get-ChildItem -Path $KeepFolder
$FileDiffs = Compare-Object -ReferenceObject $DownloadFiles -DifferenceObject $KeepFiles
$FileDiffs | foreach {
$copyParams = @{
'Path' = $_.InputObject.Fullname
}
if ($_.SideIndicator -eq '=>')
{
$copyParams.Destination = $KeepFolder
}
Copy-Item @copyParams
}
这个脚本很有效,并且可以很好地进行比较,只会复制新文件(如果它们已经存在)。问题是当我从d:\ script文件夹运行它时,它将所有文件复制到d:\ script文件夹而不是目标文件夹D:\ KeepImages。我在这里做错了什么?
对此PowerShell脚本的任何帮助都将不胜感激。
答案 0 :(得分:1)
尝试添加:Copy-Item -Force -Destination $ KeepFolder
代替 Copy-Item @copyParams
答案 1 :(得分:1)
$DownloadFolder = 'D:\TempImages'
$KeepFolder = 'D:\KeepImages'
$DownloadFiles = Get-ChildItem -Path $DownloadFolder
$KeepFiles = Get-ChildItem -Path $KeepFolder
$FileDiffs = Compare-Object -ReferenceObject $DownloadFiles -DifferenceObject $KeepFiles
$FileDiffs | foreach {
$copyParams = @{
'Path' = $_.InputObject.Fullname
}
$Downloadll = $copyParams.path
if ($_.SideIndicator -eq '=>')
{
Copy-Item $Downloadll -Destination $KeepFolder
}
}
尝试一下