2011-09-13 73 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

看起來像我缺少一個左括號,現在更新它。 –