Powershell脚本根据修改日期复制文件以从远程位置检查最新文件

时间:2015-04-02 20:05:00

标签: datetime powershell copy

我是PowerShell脚本的新手,我无法弄清楚为什么我的脚本会复制     所有文件并没有似乎检查日期,然后复制所有文件     无论如何。我也想做几天和几分钟,但我不太确定     如何做到这一点。任何帮助都会很棒!

see my script below.

$RemotePath = "\\eb-pc\E$\testlocation\*.txt"
$LocalPath = "C:\testlocation"
$Max_days = "-1"
#Max_mins = "-5"
$Curr_date = get-date

#Checking date and then copying file from RemotePath to LocalPath
Foreach($file in (Get-ChildItem $RemotePath))
{
    if($file.LastWriteTime -gt ($Curr_date).adddays($Max_days))
    {
        Copy-Item -Path $file.fullname -Destination $LocalPath
        #Move-Item -Path $file.fullname -Destination $LocalPath
    }

}

2 个答案:

答案 0 :(得分:3)

如果您想使用小时和分钟而不是AddDays,只需使用.AddMinutes(),. AddHours()或.AddSeconds()方法。

为了它的价值,我做了一个小修改,在脚本中添加了一个Else {Scriptblock}来回显未复制的文件。如上所述,您的代码只会复制过去24小时内写的文件。

$RemotePath = "t:\"
$LocalPath = "C:\temp"
$Max_days = "-1"
#Max_mins = "-5"
$Curr_date = get-date

#Checking date and then copying file from RemotePath to LocalPath
Foreach($file in (Get-ChildItem $RemotePath))
{
    if($file.LastWriteTime -gt ($Curr_date).adddays($Max_days))
    {

        Copy-Item -Path $file.fullname -Destination $LocalPath -WhatIf
        #Move-Item -Path $file.fullname -Destination $LocalPath
    }
    ELSE
    {"not copying $file"
    }

}

>What if: Performing the operation "Copy File" on target "Item: T:\file.htm Destination: C:\temp\file.ht
m".
not copying ListOfSacredVMs.txt
not copying newUser_01.png
not copying newUser_015.png
not copying newUser_02.png
not copying newUser_03.png
What if: Performing the operation "Copy File" on target "Item: T:\values.csv Destination: C:\temp\values.csv".

答案 1 :(得分:0)

我在PowerShell中做过一段时间以来已经有一段时间了。但是,您可能希望尝试回显您正在比较的值,以查看它们实际返回的内容。

Echo“LastWrite:”& $ file.LastWriteTime

Echo“Copy After:”& ($ Curr_date).adddays($ MAX_DAYS)

这有助于确定您要比较的内容。 希望这至少有一点点。