无法在 Powershell 中复制文件

发布于 2024-12-04 08:27:57 字数 689 浏览 0 评论 0原文

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

$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 时才有效 但昨天创建的文件存在于文件夹中

I am writing small script that copy files to special folder. The problem is in Copy command. It's claim me that I use wrong syntaxis to copy

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

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

Also I want to create script that calculate size of files created 1day ago. I try to do next:

$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 {}
}

The script simply do not find any files created yesterday, and I do now see any output. It's work only if set not -eq, but -lt
but yesterday created files are present in folder

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

葬心 2024-12-11 08:27:57

使用管道:

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

Use the pipeline:

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

To calculate files sizes (in MB):

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

$files.sum/1mb
夏末 2024-12-11 08:27:57

在复制语句中,您需要引用实际路径,因为 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 进行比较。如果你不这样做,你永远不会匹配。

In your copy statement you need to reference the actual path because dir is returning a fileinfo object. For example: copy -path $file.FullName Z:\SatData\graphics\LastDays\

The second part of your question $now is a day number not a date. Try something like $yesterday = (get-date).adddays(-1).date and change your comparison to if ($file.CreationTime.date -eq $yesterday)

You need to use the date property because it sets the time to 00:00:00 for the comparison. If you don't you'll never match.

来日方长 2024-12-11 08:27:57

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

For the first part, use $file.FullName instead of just $file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文