powershell - 根据文件名时间戳powershell将文件移动到年/月文件夹中
问题描述
我有数千个跨越 5 年的文件,我想将它们移动到年/月文件夹中。文件名都以
_yyyy_mm_dd_wxyz.dat
我正在寻找有关如何生成此类文件夹并使用 windows 命令外壳将文件移动到适当文件夹 yyyy/mm 的想法。
解决方案
您需要一个带有(捕获组)的正则表达式来从文件名中提取年/月。
假设年/月文件夹应直接放在文件父位置。
未经-Version 2 测试
## Q:\Test\2018\07\23\SO_51485727.ps1
Push-Location 'x:\folder\to\start'
Get-ChildItem *_*_*_*_*.dat |
Where-Object {$_.BaseName -match '_(\d{4})_(\d{2})_\d{2}_[a-z]+$'} | ForEach-Object {
$TargetDir = "{0}\{1}" -f $Matches[1],$Matches[2]
if (!(Test-Path $TargetDir)){MD $TargetDir | Out-Null}
$_ | Move -Destination $TargetDir
}
在我的 ramdriive 上运行脚本后的示例树 /f:
PS A:\> tree /F
A:.
├───2017
│ └───07
│ test_2017_07_24_xyz.dat
└───2018
└───07
test_2018_07_24_xyz.dat
推荐阅读
- .net-core - 如何在 IIS 上部署 Azure Fabric 服务?
- python - 在 Windows 10 中禁用 Python 上的 USB 设备
- c++ - 如何为构造函数生成的右值赋予左值的生命周期?
- postgresql - 如何在 Mac OS 上使用 MAMP 将 Postgres 添加到 PATH?
- java - 将字段映射到类实例
- javascript - 上传后如何从dropzone中删除所有文件
- javascript - 从父 ID 拆分并显示子 ID
- mongodb - MongoDB-在聚合查询中将双精度转换为字符串
- sockets - 如何修复“SSL_Read() 有时在开头出现特殊字符时无法读取完整数据包”
- python - 如何将 numpy.ndarray 更改为可以绘制的图形