首页 > 解决方案 > 批处理 - 根据文件夹创建日期查找和移动文件夹

问题描述

我正在尝试创建一个执行以下操作的批处理(或 PowerShell)脚本:

  1. 获取当前日期(即 06/21/2018)
  2. 查看特定文件夹中的所有子文件夹(不是递归的,只是直接子文件夹)并查找创建日期为上一年的所有文件夹,直到上一年的当前日期(即 01/01/2017 - 2017 年 6 月 21 日)。
  3. 将所有这些文件夹移至“2017 Jobs”文件夹。

所以我一直在寻找这个问题的答案,但一切似乎都集中在文件日期,而不是文件夹日期,所以我们到了。我知道如何使用 Robocopy 来移动找到的文件夹,但它的所有开关都是基于移动早于 X 日期的文件,而不是文件夹。关于如何实现基于文件夹的创建日期循环查找的任何想法?

标签: powershellbatch-file

解决方案


无需为您构建整个脚本,以下是您的作品:

$date = Get-Date
$dateAYearAgo = $date.AddYears(-1)

$items = Get-ChildItem "C:\base\folder" | Where-Object {$_.CreationTime -gt $start -and $_.CreationTime -lt $end}
$items | Move-Item "C:\base\folder\2017 Jobs"

至于只过滤文件夹,您可以查看您所在的 powershell 版本是否Get-ChildItem C:\ -Directory只允许提取目录,或者您可以使用Get-ChildItem C:\ | Where-Object { $_.PSIsContainer }


推荐阅读