【问题标题】:Powershell - Get last modified file's parent directory namePowershell - 获取最后修改文件的父目录名称
【发布时间】:2020-05-11 19:34:40
【问题描述】:

我有几个文件夹,它们里面都有一个 Log 文件夹和日志文件。 只有一个文件夹会修改其日志文件。我需要检索它的顶级父目录名称。

我不能使用Sort-Object LastWriteTime,因为每当更新日志时 - 只有日志文件的最后修改时间才会更新。 Logtop parent folder 根本没有更新它们的 lastwritetime

我该怎么做?

Folder1\Log\filename1.log
Folder2\Log\filename3.log -> Assume this is the latest one that got its log file updated.
Folder3\Log\filename5.log
Folder4\Log\filename2.log
Folder5\Log\filename6.log

我想得到“Folder2”作为输出

【问题讨论】:

  • 到目前为止你的代码是什么?
  • 我的旧代码只是基于 LastWriteTime 的排序,然后使用它。但是新的部署改变了目录的结构。所以不确定这是否可行,但我正在考虑使用 lastWriteTime 进行排序并选择 5 个目录,然后遍历这 5 个目录并找到最新的日志文件更新目录并返回它。
  • 请注意,文件夹1、2等是旧版本,但有时我们可能会恢复到旧版本,然后它会有最新的日志

标签: powershell


【解决方案1】:

您可以使用Get-ChildItem 执行此操作,过滤“*.log”文件并递归遍历子文件夹所在的根文件夹。

然后对文件 LastWriteTime 属性进行排序,选择最新的并从中获取文件夹名称:

$rootFolder = 'X:\TheRootFolderWhereTheSubFoldersAre'
Split-Path -Path ((Get-ChildItem -Path $rootFolder -Filter '*.log' -File -Recurse | 
                   Sort-Object LastWriteTime | Select-Object -Last 1).DirectoryName) -Leaf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2021-12-07
    • 2014-10-28
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多