我正在编写将文件复制到特殊文件夹的小脚本。问题出在“复制”命令中。它声称我使用了错误的语法来复制
$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 :(得分: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。