windows - 如何使用 PowerShell 将新文件从一个文件夹复制到另一个文件夹

标签 windows powershell copy copy-item

我在完成 powershell 脚本时遇到了一些问题。我有一个程序可以将图像下载到临时文件夹中,然后在一小时内它将删除图像文件。有时我想保留一些文件,因此我创建一个 powershell 脚本将图像文件从临时文件夹复制到新文件夹,以便我可以对它们进行排序并保留我想要的内容。

  • 这是从下载文件夹到目标文件夹的单向复制。
  • 由于 Windows 任务计划程序将每 20 分钟运行一次脚本,因此我希望脚本将其在下载文件夹中找到的文件与目标文件夹中的文件进行比较,以查看它是否已存在。
  • 如果文件是新的,则复制它,如果它已经在目标文件夹中,则忽略它。
  • 这只是纯粹匹配文件名,而不进行二进制比较。

在网上搜索,我在 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 脚本的帮助将不胜感激。

最佳答案

$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 
    }
}

试试这个

关于windows - 如何使用 PowerShell 将新文件从一个文件夹复制到另一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49838139/

相关文章:

node.js - Azure Javascript SDK 无法为访问层为 'Archive' 的 Blob 复制 Blob (sync/beginCopyBlobUrl)

java - 在 Java 中传递对象引用的问题

c# - Windows 应用程序 Java Servlet 参数传递

powershell - 做超时循环

powershell - “Read-Host -Prompt”和 “Read-Host”之间有区别吗?

powershell - 使用 PowerShell 替换文件中的字符串

php - HTTP ://wrapper is disabled in the server configuration by allow_url_fopen=0 in

xml - 维克斯 MSMQ : The Product element contains an unexpected child element 'msmq:MessageQueue'

windows - 适用于 Apache 2.4 和 Windows Server 2008 r2 的 mod_pagespeed

windows - 函数 Hook 实际上是如何工作的? WinAPI, C++