PowerShell 脚本将遍历指定目录中的所有修改时间为2小时内的文件

简介

我需要使用一个PowerShell 脚本将遍历指定目录中的所有文件,检查每个文件的修改时间是否在最近2小时内,并输出相应结果。

解决方案

show me the code ->

# 设置要检查的目录路径
$directoryPath = "D:\Workspace\Data\powershell\"  # 替换为你的实际路径

# 获取当前时间
$currentTime = Get-Date

# 计算2小时前的时间点
$twoHoursAgo = $currentTime.AddHours(-2)

# 获取目录中所有文件
$files = Get-ChildItem -Path $directoryPath -File

# 遍历所有文件并检查修改时间
foreach ($file in $files) {
    $modifiedTime = $file.LastWriteTime
    
    # 检查文件修改时间是否在最近2小时内
    if ($modifiedTime -ge $twoHoursAgo) {
        Write-Host "文件 '$($file.Name)' 修改于: $modifiedTime - 在范围"
    }
    else {
        Write-Host "文件 '$($file.Name)' 修改于: $modifiedTime - 不在检测范围"
    }
}

# 可选:添加统计信息
$inScopeCount = ($files | Where-Object { $_.LastWriteTime -ge $twoHoursAgo }).Count
Write-Host "检测完成! 共检查 $($files.Count) 个文件"
Write-Host "其中 $inScopeCount 个文件在最近2小时内修改过"

# Powered by https://zhengkai.blog.csdn.net/

PowerShell 脚本将遍历指定目录中的所有修改时间为2小时内的文件_第1张图片

PowerShell 脚本将遍历指定目录中的所有修改时间为2小时内的文件_第2张图片

关键功能说明:

  1. 时间计算

    • 使用 AddHours(-2) 计算2小时前的时间点

    • 比较文件的 LastWriteTime 属性与此时间点

    • 如需检查创建时间而非修改时间,将 LastWriteTime 改为 CreationTime

  2. 文件筛选

    • -File 参数确保只获取文件(排除目录)

    • 支持递归检查子目录(如需此功能,添加 -Recurse 参数)

      可包含子目录:$files = Get-ChildItem -Path $directoryPath -File -Recurse

  3. 格式化输出

    • 使用 ToString() 自定义时间格式:

      $formattedTime = $modifiedTime.ToString("yyyy-MM-dd HH:mm:ss")

此脚本会自动处理时区和夏令时问题,所有时间比较均使用本地系统时间。

 

你可能感兴趣的:(SCRIPT/BATCH,linux,服务器,数据库)