复制最近 2 天内修改的文件

Copy files modified in last 2 days

我想在文件夹之间复制文件。仅在当天和前一天 修改(包含新条目的 CSV 文件)。

这是我的代码:

foreach ($file in (Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-222_2")) {
    if ($file.LastWriteTime = (Get-Date).AddDays(-1)) {
        Copy-Item -Path "D:\Shares\WinCAP Data\DAYPROT\OFS-222_2\*.csv" -Destination "\Oracle\MP"
        "copying $file"
    } else {
        "not copying $file"
    }
}

怎么了 - 有什么建议吗?

您需要将日期与 -gt 进行比较,否则您正在寻找在那个确切时间复制的文件。

请注意,执行 (Get-Date).AddDays(-1) 是完全有效的,但会为您提供过去 24 小时内修改过的任何内容。

$DestinationFolder = "\Oracle\MP\"
$EarliestModifiedTime = (Get-date).AddDays(-1)
$Files = Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-222_2\*.csv" 
foreach ($File in $Files) {
    if ($File.LastWriteTime -gt $EarliestModifiedTime)
    {
        Copy-Item $File -Destination $DestinationFolder
        Write-Host "Copying $File"
    }
    else 
    {
        Write-Host "Not copying $File"
    }
}

如果您不想写出 "Copying ..." 和 "Not Copying ...",那么您可以稍微简化一下。

$DestingationFolder = "\Oracle\MP\"
$EarliestModifiedTime = (Get-date).AddDays(-1) 
Get-ChildItem -File |? { $_.LastWriteTime -gt $EarliestModifiedTime } | Copy-Item -Destination $DestingationFolder

最后,如果您想复制自昨天开始(例如午夜开始)以来的任何内容,请更改以下行:

$EarliestModifiedTime = (Get-date).AddDays(-1).Date

@Mr Tree 我还有一个相关问题

我每天在位置 D:\Shares\WinCAP Data\DAYPROT\OFS-HT(位置 1)收到几次新文件,名称固定 abcDD.MM.YYYY.csv (abc03.09.2015.csv ) 并且我有一项服务,每 10 分钟调用一次下面的 powershell 脚本。我按照你之前在上面的帖子中的建议做了。我的目标是: 1. 检查是否有名称为 abcDD.MM.YYYY.csv | 的新文件 | 2. 将其重命名为 abcDD.MM.YYYYHT.csv 并将其移动到“\Oracle\MP\PURO\”(位置 2)文件夹,我需要用当天的现有文件夹重写它。

问题是如果文件已经存在于位置 2,脚本不想移动它并重写它?感谢提示。

$DestingationFolder = "\Oracle\MP\PURO\"
$EarliestModifiedTime = (Get-date).AddDays(-1)

Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-HT\*.csv" | ?{!($_.fullname -match "HT\.csv")} | Rename-Item -NewName { $_.Name -replace "\.csv", "HT.csv" }

$Files = Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-HT\*.csv" -File

foreach ($File in $Files) {
    if ($File.LastWriteTime -gt $EarliestModifiedTime)
    {
        Move-Item $File -Destination $DestingationFolder
        Write-Host "Moving $File"
    }
    else 
    {
        Write-Host "Not moving $File"
    }
}