【问题标题】:Iterate over files in Powershell遍历 Powershell 中的文件
【发布时间】:2016-06-21 18:58:17
【问题描述】:

我正在尝试遍历一组文件夹并将它们复制到 PowerShell 中的不同位置。所有文件夹都遵循以下命名约定:

20160621

这显然是用yyyymmdd 格式写的一天。由于所有文件夹都遵循这个约定,我的问题是我怎么说:复制过去一周的所有文件夹“?我曾想过使用(get-date).AddDays(-7),但我不确定如何将文件夹名称识别为日期对象而不是字符串。

【问题讨论】:

    标签: powershell powershell-2.0


    【解决方案1】:

    只需使用Get-ChildItem cmdlet 检索文件并使用Where-Object cmdlet 过滤它们。

    以下脚本结合了三个Whereconditions

    1. 获取所有目录
    2. 确保目录名称正好包含六位数字。
    3. 将六位数字解析为 DateTime 对象并确保其早于 7 天前:

    脚本:

    Get-ChildItem 'your_source' | Where-Object { 
        $_.PsIsContainer -and 
        $_.BaseName -match '\d{6}' -and 
        ([DateTime]::ParseExact($_.BaseName, 'yyyyMMdd', $null) -gt (Get-Date).AddDays(-7)) 
    } | Copy-Item -Destination 'Your_destination'
    

    【讨论】:

    • 效果很好!几乎……在某些情况下,目标中存在具有相同日期的文件夹。我怎么说“如果存在合并内容”?
    • 在 Copy-Item cmdlet 上尝试 -force
    • 那会合并内容吗?
    • merge 是什么意思?
    • 不删除当前文件,只添加新文件
    猜你喜欢
    • 2016-02-04
    • 2013-10-24
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    相关资源
    最近更新 更多