2011-09-13 37 views
0

我在写小型脚本,将文件复制到特殊文件夹。问题在复制命令。它声称我使用错句法来复制无法复制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 但昨天创建的文件存在于文件夹中

+0

第一个对我的作品,你能不能请张贴** **确切的错误信息? –

+0

对我来说不工作:( http://xmages.net/i/3098832 该文本表示文件中存在语法错误或其名称为 – Suliman

+0

将'-whatif'参数添加到您的复制命令时会发生什么? –

回答

0

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

+0

我试图用$ fle.FullName来完成它,但它现在可以工作了。屏幕截图是 – Suliman

+0

http://postimage.org/image/aeclk5lw/ – Suliman

1

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

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

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

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 
+0

Shay Levy,你的第二个例子现在可以工作,它是blaim,它可以评估-eq – Suliman

+0

看起来像我缺少一个左括号,现在更新它。 –