【问题标题】:How to copy folders older than a specific date with Powershell 2.0如何使用 Powershell 2.0 复制早于特定日期的文件夹
【发布时间】:2019-11-03 20:36:36
【问题描述】:

我有许多要复制的文件夹。这些文件夹的名称都是“yyyymmdd”,即 20190615,可以追溯到一年或更长时间。我试图找出一种方法来仅复制这些文件夹的最后 45 天。我遇到的最大问题是我运行它的计算机只有 Powershell 2.0,它似乎有一些 5 或更高版本没有的限制。

我已经能够获得路径中所有文件夹的列表:

$datedsubs = Get-ChildItem -path $path | where-object { $_ -like "20*" }

不过,我有点卡住了。我觉得使用 PS 5 或更高版本会更容易。我试过 Robocopy,尽管这不是 PS 解决方案,但它会复制所有内容,我只想要文件夹。

我尝试过类似以下的方法,但它似乎不适用于 PS 2.0。

Get-ChildItem -Path $path | Where-Object { ($_ -like '20*') -and ($_.LastAccessTime -lt $datedlimit)} | Copy-Item -Destination $destination -Recurse

如有任何帮助,我们将不胜感激。

谢谢

【问题讨论】:

  • Get-ChildItem得到列表,用.PSIsContainer过滤掉文件,按名称排序[日期字符串将按原样整齐排序],然后用Select-Object -Index (1..5)得到第一个5项目。
  • robocopy 可能适用于 e xf * robocopy 20* /e /xf * /maxage:20151231maxage
  • @Harlan - 不客气!很高兴能帮上一点忙……[grin]

标签: windows powershell powershell-2.0


【解决方案1】:

将李所说的内容放入一些代码中。

Get-ChildItem -Path $Path -Filter "20*" | Where-Object {($_.PSIsContainer) `
    -and ($_.LastAccessTime -gt ((Get-Date).AddDays(-45)))} | `
    Copy-Item -Destination $destination -Recurse

这应该会让你得到你想要的。

我已在 45 天前将其发送至 -gt,因为这只会显示过去 45 天内访问过的文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2013-05-12
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多