文件名 & 年份 & 最后修改日期

维吉特

基于文件名中的年份 - 上次修改的最大日期文件,剩余时间移至存档。

示例:2016 年 1 个文件应该存在剩余的 2017 年存档相同。

我试过了

$sourcedir = 'C:\Users\garang\Documents\input_files\Advisory_rate'
$destdir   = 'C:\Users\garang\Documents\input_files\Advisory_rate\Archive'
Get-ChildItem -File -Path $sourcedir |
    Sort-Object {$_.Basename.Split('-')[1,0]} 

Select-Object -Skip 1 | Move-Item -Destination $destdir -Force
模式 最后修改日期 长度 文件名

-a--- 6/25/2018 12:08 AM 31744 abc_2016_2 - Copy - Copy.xls 
-a--- 6/25/2018 12:07 AM 31744 abc_2016_2 - Copy.xls 
-a --- 6/25/2018 12:06 AM 31744 abc_2017_1.xls 
-a--- 6/25/2018 12:07 AM 31744 abc_2017_2.xls 
-a--- 2018/6/25 12:725 AM 31_725 AM .xls

欢迎以动态而非硬编码的形式提出建议。

用户6811411

这是要完成的任务的第一个中途可理解的描述(来自您和您的几个同事)。

让我试着翻译一下:

  • 源文件夹中的文件应按从文件名中提取的年份分组
  • 所有文件都应存档,但每个组中的最新文件除外(由 LastWriteDate 确定)

未经测试的脚本

$sourcedir = 'C:\Users\garang\Documents\input_files\Advisory_rate'
$destdir   = 'C:\Users\garang\Documents\input_files\Advisory_rate\Archive'

Get-ChildItem -File -Path $sourcedir*.xls |
  Group-Object {$_.Basename.Split('_')[1]} | ForEach-Object {
    $_.Group | Sort-Object LastWriteTime -Descending |
      Select-Object -Skip 1 | Move-Item -Destination $destdir -Force -WhatIf
  }

为了首先检查结果,我将 eparameter 添加-WhatIf到 Move-Item。
如果一切正常,请删除-WhatIf

Group-Object 之后的中间结果(在我的 ramdrive A 上:):

Count Name  Group
----- ----  -----
    2 2016  {A:\abc_2016_2 - Copy - Copy.xls, A:\abc_2016_2 - Copy.xls}
    3 2017  {A:\abc_2017_1.xls, A:\abc_2017_2.xls, A:\abc_2017_3.xls}

编辑以在此处遵循lit s提示
使用(捕获组)使用正则表达式提取年份的变体

Get-ChildItem -File -Path $sourcedir*.xls |
  Where-Object BaseName -match '_(20\d{2})_\d' |
    Group-Object {$Matches[1]} | ForEach-Object {
      $_.Group | Sort-Object LastWriteTime -Descending |
        Select-Object -Skip 1 | Move-Item -Destination $destdir -Force -WhatIf
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取文件的最后修改日期

来自分类Dev

将文件名更改为修改日期

来自分类Dev

将文件名更改为修改日期

来自分类Dev

从文件名获取日期,月份,年份并将其转换为日期格式

来自分类Dev

从文件名获取日期,月份,年份并将其转换为日期格式

来自分类Dev

如何使用Python从网络驱动器获取具有最后修改日期的文件名?

来自分类Dev

Qt资源系统中文件的最后修改日期

来自分类Dev

获取AppleScript中文件的最后修改日期

来自分类Dev

是否可以更改文件的最后修改日期?

来自分类Dev

获取Linux中文件的最后修改日期

来自分类Dev

GAE Python:如何获取静态文件的最后修改日期

来自分类Dev

使用引用更改许多文件的最后修改日期

来自分类Dev

Deja Dup 恢复丢失的文件的最后修改日期

来自分类Dev

Python如何从TeamSites读取文件的最后修改日期

来自分类Dev

从存储为文件名的日期开始设置文件修改日期

来自分类Dev

使用文件名中的日期更改文件修改日期

来自分类Dev

更改日期格式的文件名

来自分类Dev

显示未暂存更改的文件的最后提交和最后修改日期

来自分类Dev

CMD/BAT 获取所有文件名的修改日期并附加到它们的文件名

来自分类Dev

如何列出文件 - 按文件名和修改日期排序?

来自分类Dev

打印文件名、行数、文件大小和修改日期

来自分类Dev

如何以角度4获取上传文件的文件名,修改日期?

来自分类Dev

获取文件的最后修改日期/时间作为本地日期/时间字符串

来自分类Dev

将文件的最后修改日期/时间与当前日期/时间进行比较?

来自分类Dev

获取媒体文件的创建日期和最后修改日期

来自分类Dev

使用Shell脚本计算文件的最后修改日期与NOW之间的日期差

来自分类Dev

打印文件名,带标题的修改日期和大小

来自分类Dev

将修改日期插入文件名-2种情况

来自分类Dev

根据修改日期将 CSV 文件名设置为 jmeter 中的变量

Related 相关文章

  1. 1

    如何获取文件的最后修改日期

  2. 2

    将文件名更改为修改日期

  3. 3

    将文件名更改为修改日期

  4. 4

    从文件名获取日期,月份,年份并将其转换为日期格式

  5. 5

    从文件名获取日期,月份,年份并将其转换为日期格式

  6. 6

    如何使用Python从网络驱动器获取具有最后修改日期的文件名?

  7. 7

    Qt资源系统中文件的最后修改日期

  8. 8

    获取AppleScript中文件的最后修改日期

  9. 9

    是否可以更改文件的最后修改日期?

  10. 10

    获取Linux中文件的最后修改日期

  11. 11

    GAE Python:如何获取静态文件的最后修改日期

  12. 12

    使用引用更改许多文件的最后修改日期

  13. 13

    Deja Dup 恢复丢失的文件的最后修改日期

  14. 14

    Python如何从TeamSites读取文件的最后修改日期

  15. 15

    从存储为文件名的日期开始设置文件修改日期

  16. 16

    使用文件名中的日期更改文件修改日期

  17. 17

    更改日期格式的文件名

  18. 18

    显示未暂存更改的文件的最后提交和最后修改日期

  19. 19

    CMD/BAT 获取所有文件名的修改日期并附加到它们的文件名

  20. 20

    如何列出文件 - 按文件名和修改日期排序?

  21. 21

    打印文件名、行数、文件大小和修改日期

  22. 22

    如何以角度4获取上传文件的文件名,修改日期?

  23. 23

    获取文件的最后修改日期/时间作为本地日期/时间字符串

  24. 24

    将文件的最后修改日期/时间与当前日期/时间进行比较?

  25. 25

    获取媒体文件的创建日期和最后修改日期

  26. 26

    使用Shell脚本计算文件的最后修改日期与NOW之间的日期差

  27. 27

    打印文件名,带标题的修改日期和大小

  28. 28

    将修改日期插入文件名-2种情况

  29. 29

    根据修改日期将 CSV 文件名设置为 jmeter 中的变量

热门标签

归档