2011-09-13 14 views
0

ファイルを特別なフォルダにコピーする小さなスクリプトを作成しています。コピーコマンドに問題があります。それは私がまた、私は1DAY前に作成されたファイルのサイズを計算するスクリプトを作成したいPowershellでファイルをコピーできません

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

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

をコピーするために、間違ったsyntaxisを使用することを私に主張です。私は次にしようとします:

$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ではなく$ file.FullNameを使用します。

+0

$ fle.FullNameでしようとしましたが、現在は機能しています。スクリーンショットは – Suliman

+0

です。http://postimage.org/image/aeclk5lw/ – Suliman

1

コピーステートメントでは、dirがfileinfoオブジェクトを返すため、実際のパスを参照する必要があります。例:copy -path $file.FullName Z:\SatData\graphics\LastDays\

質問の第2部分$nowは、日付ではなく日番号です。 $yesterday = (get-date).adddays(-1).dateのようなものを試して、比較をif ($file.CreationTime.date -eq $yesterday)に変更してください。

比較のために時刻を00:00:00に設定するため、dateプロパティを使用する必要があります。あなたがしなければ、あなたは決してマッチしません。 (MB単位)のファイルサイズを計算するには

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

2

は、パイプラインを使用し

$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、2番目の例では、評価して-eq – Suliman

+0

のように見えますが、これを今更新しています。 –

関連する問題