在Powershell文件名中按日期列出文件

罗纳德·麦地那

我希望你一切都好。

我是Powershell的新手,正在尝试制作一个脚本,该脚本允许根据文件名中的日期列出7天的文件,然后将其复制/移动到另一个目录。

档案结构:2020_06_11_DB.txt YYYY_MM_dd

我已经设置了这段脚本,但它只将文件与参考日期(DateRef)匹配,而不与它的最少(旧)匹配:

$SourceDB = "C:\DB\"
$DestinationDB = "C:\Destination\DB\"
$DateRef = Get-Date ((Get-Date).AddDays(-7)) -Format yyyy_MM_dd

$Query = Get-ChildItem $SourceDB -Filter "*$DateRef*" |
ForEach-object {
    Copy-Item -Path $_.FullName -Destination $DestinationDB
}

我尝试了-le和-lt之类的运算符,但没有成功。如果您能帮助我,我将不胜感激。

Get-ChildItem $SourceDB -Filter '*.txt' | Where-Object {$_.BaseName -le "*$DateRef*"}

谢谢!

事物管理

比较日期时,您将要使用DateTime对象。因此,挑战在于从文件名中提取日期字符串并将其转换为DateTime对象,然后再进行比较。

$SourceDB = "C:\DB\"
$DestinationDB = "C:\Destination\DB\"
$DateRef = (Get-Date).AddDays(-7).Date

$Query = Get-ChildItem $SourceDB -File | Where {
    $_.BaseName -match '\d{4}_\d{2}_\d{2}' -and [datetime]::ParseExact(([regex]::Match($_.BaseName,'\d{4}_\d{2}_\d{2}').Value),'yyyy_MM_dd',$null) -le $DateRef } |
        Foreach-Object {
            Copy-Item -Path $_.FullName -Destination $DestinationDB
        } 
    

说明:

我不想阻止您使用-Filter因为它比在中过滤更好Where-Object因此,您可以首先使用类似-Filter '*_*_*'或通配符的路径来部分过滤-Path "$SourceDB*[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]*"

在中使用-File参数Get-Childitem,仅返回文件。

(Get-Date).AddDays(-7).Date 是今天前7天的午夜。

$_.BaseName -match '\d{4}_\d{2}_\d{2}'匹配格式为的文件####_##_##

[regex]::Match($_.BaseName,'\d{4}_\d{2}_\d{2}').Value返回匹配的字符串####_##_##[datetime]::ParseExact()将匹配的字符串(格式'yyyy_MM_dd')转换为DateTime对象。

-le小于或等于运算符。因此,-le $DateRef返回早于或等于的日期$DateRef

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

列出文件名

来自分类Dev

如何列出文件名中包含空格的文件?

来自分类Dev

如何列出文件夹中的文件名

来自分类Dev

无法使用Get-ChildItem在Powershell脚本中列出文件名

来自分类Dev

根据 hdfs 中的模式列出文件名

来自分类Dev

Python:按创建日期或文件名中的编号列出目录中的XML文件

来自分类Dev

bash,列出文件名,数组

来自分类Dev

如何获取Unix以列出文件中的行数并仅输出文件名?

来自分类Dev

如何按创建日期列出文件

来自分类Dev

在文件名(模式)之后列出文件夹中的文件 - Linux

来自分类Dev

如何仅列出文件名而不列出目录中的属性(在Linux中)?

来自分类Dev

如何使用angular js列出文件夹中的所有文件名

来自分类Dev

列出文件夹中相似文件名的数量

来自分类Dev

如何根据提供的模式列出文件夹中的文件名?

来自分类Dev

递归列出文件名中包含下划线的文件

来自分类Dev

如何列出文件名中带有“ 2015”的一天之前的文件?

来自分类Dev

如何按文件名中的日期对文件排序?

来自分类Dev

如何让grep列出文件名之前的匹配计数?

来自分类Dev

为什么在忽略终端中文件名长度的情况下按字母顺序列出文件?

来自分类Dev

如何通过xargs将ls传递到cat中,以便列出文件名?

来自分类Dev

如何在目录中的服务器上列出文件名?

来自分类Dev

按年份列出文件

来自分类Dev

Git-按创建日期列出文件

来自分类Dev

按修改日期列出文件夹

来自分类Dev

列出文件夹中的所有文件,并在每个文件名之间添加句子

来自分类Dev

从文件名中提取日期,然后按日期升序处理文件-Powershell

来自分类Dev

批处理文件:列出文件名和文件夹名

来自分类Dev

Gnu / Linux:在其他目录中列出文件,文件名中带有某些字符

Related 相关文章

  1. 1

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

  2. 2

    列出文件名

  3. 3

    如何列出文件名中包含空格的文件?

  4. 4

    如何列出文件夹中的文件名

  5. 5

    无法使用Get-ChildItem在Powershell脚本中列出文件名

  6. 6

    根据 hdfs 中的模式列出文件名

  7. 7

    Python:按创建日期或文件名中的编号列出目录中的XML文件

  8. 8

    bash,列出文件名,数组

  9. 9

    如何获取Unix以列出文件中的行数并仅输出文件名?

  10. 10

    如何按创建日期列出文件

  11. 11

    在文件名(模式)之后列出文件夹中的文件 - Linux

  12. 12

    如何仅列出文件名而不列出目录中的属性(在Linux中)?

  13. 13

    如何使用angular js列出文件夹中的所有文件名

  14. 14

    列出文件夹中相似文件名的数量

  15. 15

    如何根据提供的模式列出文件夹中的文件名?

  16. 16

    递归列出文件名中包含下划线的文件

  17. 17

    如何列出文件名中带有“ 2015”的一天之前的文件?

  18. 18

    如何按文件名中的日期对文件排序?

  19. 19

    如何让grep列出文件名之前的匹配计数?

  20. 20

    为什么在忽略终端中文件名长度的情况下按字母顺序列出文件?

  21. 21

    如何通过xargs将ls传递到cat中,以便列出文件名?

  22. 22

    如何在目录中的服务器上列出文件名?

  23. 23

    按年份列出文件

  24. 24

    Git-按创建日期列出文件

  25. 25

    按修改日期列出文件夹

  26. 26

    列出文件夹中的所有文件,并在每个文件名之间添加句子

  27. 27

    从文件名中提取日期,然后按日期升序处理文件-Powershell

  28. 28

    批处理文件:列出文件名和文件夹名

  29. 29

    Gnu / Linux:在其他目录中列出文件,文件名中带有某些字符

热门标签

归档