首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较mkv的创造时间

比较mkv的创造时间
EN

Stack Overflow用户
提问于 2017-10-12 17:53:33
回答 5查看 178关注 0票数 1

我的任务是创建一个脚本,检查我们设置的办公室摄像头是否停止将其提要上传到位于我们的Windows 2016存储服务器上的“摄像头”共享。如果最新的.mkv是超过一个小时的时间相比,目前的时间(获取日期),那么“问题”相机需要重新启动手动。(无需编写这部分文字。)

到目前为止,我的主管写的是:

代码语言:javascript
复制
#Variable Definitions start here

$numhours = 1

Get-ChildItem "d:\Shares\Cameras" | Foreach {    

$folderToLookAt =  ($_.FullName + "\*.mkv")
$result = Get-ChildItem -Recurse $folderToLookAt | Sort-Object CreationTime -Descending


echo $result[0].FullName
echo $result[0].CreationTime

}

第一个变量确实还没有被使用,但是我对下一步该做什么有点傻了。以上返回最新.mkvs的全名和创建时间。

关于下一部分的建议?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-10-12 19:03:10

我假设你的道路看起来是:

代码语言:javascript
复制
D:\Shares\Cameras\Camera1\file1.mkv
D:\Shares\Cameras\Camera1\file2.mkv
D:\Shares\Cameras\Camera2\file1.mkv
D:\Shares\Cameras\Camera2\file2.mkv
D:\Shares\Cameras\Camera3\file1.mkv
.
.
.

如果是这样的话,我会这样做:

代码语言:javascript
复制
# The path to your files
$CameraShareRoot = 'D:\Shares\Cameras';

# Number of Hours
$NumberOfHours = 1;

# Date and time of significance.  It's $NumberOfHours in the past.
$MinFileAge = (Get-Date).AddHours( - $NumberOfHours);

# Get all the folders at the camera share root
Get-ChildItem -Path $CameraShareRoot -Directory | ForEach-Object {
    # Get the most recently created file in each folder
    $_ | Get-ChildItem -Recurse -Filter '*.mkv' -File | Sort-Object -Property CreationTime -Descending | Select-Object -First 1
} | Where-Object {
    # Remove any files that were created after our datetime
    $_.CreationTime -lt $MinFileAge;
} | Select-Object -Property FullName, CreationTime

这将只是输出完整的文件名和创建时间的陈腐相机。

当结果有任何文件时,您可以这样做来给自己发电子邮件:

代码语言:javascript
复制
# The path to your files
$CameraShareRoot = 'D:\Shares\Cameras';

# Number of Hours
$NumberOfHours = 1;

# Date and time of significance.  It's $NumberOfHours in the past.
$MinFileAge = (Get-Date).AddHours( - $NumberOfHours);

# Get all the folders at the camera share root, save the results to $StaleCameraFiles
$StaleCameraFiles = Get-ChildItem -Path $CameraShareRoot -Directory | ForEach-Object {
    # Get the most recently created file in each folder
    $_ | Get-ChildItem -Recurse -Filter '*.mkv' -File | Sort-Object -Property CreationTime -Descending | Select-Object -First 1;
} | Where-Object {
    # Remove any files that were created after our datetime
    $_.CreationTime -lt $MinFileAge;
}

# If there are any stale camera files
if ($StaleCameraFiles) {
    # Send an email
    $MailMessage = @{
        SmtpServer = 'mail.example.com';
        To = 'youremail@example.com';
        From = 'youremail@example.com';
        Subject = 'Stale Camera Files';
        Body = $StaleCameraFiles | Select-Object -Property FullName, CreationTime | ConvertTo-Html -Fragment | Out-String;
        BodyAsHtml = $true;
    }
    Send-MailMessage @MailMessage;
}

通常,您希望使用LastWriteTime而不是CreationTime,因为后者可以通过文件移动或复制来更新,但是这里可能正是您想要的。

票数 0
EN

Stack Overflow用户

发布于 2017-10-12 18:48:52

反转逻辑--而不是搜索所有的文件,对它们进行排序,查找最近的文件,并检查日期,相反地,这样做。

查找自截止日期以来创建的文件,如果没有找到,则发出警报:

代码语言:javascript
复制
$cutOffTime = [datetime]::Now.AddHours(-1)

Get-ChildItem "d:\Shares\Cameras" | Foreach {    

    $folderToLookAt =  ($_.FullName + "\*.mkv")
    $result = Get-ChildItem -Recurse $folderToLookAt | Where-Object { $_.CreationTime -gt $cuttoffTime }

    if (-not $result)
    {
        "$($_.Name) has no files since the cutoff time"
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-10-12 18:09:57

您必须将CreationTime日期与(Get-Date).AddHours(-1)日期进行比较。AddHours方法允许将小时添加到DateTime,但也可以减去小时。

您可以使用以下示例:

代码语言:javascript
复制
$Path = 'd:\Shares\Cameras'
$CreationTime = Get-ChildItem -Path $Path -Filter *.mkv | 
    Sort-Object -Property CreationTime -Descending | 
    Select-Object -First 1 -ExpandProperty CreationTime
if ($CreationTime -lt (Get-Date).AddHours(-1)) {
    # your action here (restart, send mail, write output, ...)
}

它还对代码进行了一些优化。;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46715995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档