无法在Powershell中复制文件

时间:2011-09-13 12:28:53

标签: powershell

我正在编写将文件复制到特殊文件夹的小脚本。问题出在“复制”命令中。它声称我使用了错误的语法来复制

$files = dir -r -path "Z:\graphics\" -i *.*

foreach ($file in $files)
{
    copy -path $file Z:\SatData\graphics\LastDays\
}

另外,我想创建一个脚本来计算1天前创建的文件的大小。我试着做下一个:

$today = Get-Date
$now = $today.Day
$now

$lastdays = $today.AddDays(-1)
$lastdays

$files = dir -r -path "Z:\graphics\" -i *.*

foreach ($file in $files) 
{
if ($file.CreationTime -eq $lastdays) # if file was create yesterday calculate it
    {
    $sum
    $sum = $sum + $file.length
    $sum/1MB

    $file.CreationTime

    }
else {}
}

脚本根本找不到昨天创建的任何文件,现在我看到任何输出。它只有在设置为-eq但是-lt时才有效  但昨天创建的文件存在于文件夹

3 个答案:

答案 0 :(得分:2)

使用管道:

dir -r -path Z:\graphics | copy-item -dest Z:\SatData\graphics\LastDays

计算文件大小(以MB为单位):

$files = dir -r -path Z:\graphics | 
         where {-not $_.PSIsContainer -and $_.CreationTime.Date -eq (Get-Date).AddDays(-1).Date} |
         measure -sum

$files.sum/1mb

答案 1 :(得分:1)

在copy语句中,您需要引用实际路径,因为dir正在返回一个fileinfo对象。例如:copy -path $file.FullName Z:\SatData\graphics\LastDays\

问题的第二部分$now是日期编号,而不是日期。尝试$yesterday = (get-date).adddays(-1).date之类的内容,将您的比较更改为if ($file.CreationTime.date -eq $yesterday)

您需要使用日期属性,因为它将时间设置为00:00:00以进行比较。如果你不这样做,你永远不会匹配。

答案 2 :(得分:0)

对于第一部分,使用$ file.FullName而不是$ file。