求PowerShell脚本:按文件名日期创建层级文件夹并移动文件
PowerShell脚本:按文件名首8位日期批量归档文件
下面是实现需求的PowerShell脚本,支持批量处理指定主文件夹内的文件,自动按日期层级归档:
# 替换为你的目标主文件夹路径 $targetFolder = "C:\Your\Main\Folder\Path" # 遍历主文件夹下的所有文件(不含子文件夹) Get-ChildItem -Path $targetFolder -File | ForEach-Object { # 提取文件名前8位字符 $datePrefix = $_.Name.Substring(0, 8) # 验证是否为有效的8位日期格式(YYYYMMDD) if ($datePrefix -match '^\d{8}$' -and [DateTime]::TryParseExact($datePrefix, 'yyyyMMdd', $null, [System.Globalization.DateTimeStyles]::None, [ref]$null)) { # 拆分年、月、日 $year = $datePrefix.Substring(0, 4) $month = $datePrefix.Substring(4, 2) $day = $datePrefix.Substring(6, 2) # 构建目标文件夹路径 $destinationPath = Join-Path -Path $targetFolder -ChildPath "$year\$month\$day" # 创建文件夹(已存在则跳过) if (-not (Test-Path -Path $destinationPath)) { New-Item -Path $destinationPath -ItemType Directory | Out-Null } # 移动文件到目标文件夹,-Force参数可覆盖重名文件 Move-Item -Path $_.FullName -Destination $destinationPath -Force Write-Host "已归档: $($_.Name) → $destinationPath" } else { Write-Warning "跳过不符合日期格式的文件: $($_.Name)" } }
关键说明
- 路径配置:将
$targetFolder的值替换为你实际要处理的主文件夹路径 - 格式校验:脚本会自动过滤掉文件名前8位不是有效
YYYYMMDD格式的文件,避免无效操作 - 文件夹处理:仅当目标层级文件夹不存在时才创建,已存在则直接使用
- 文件移动:
-Force参数允许覆盖目标文件夹中同名文件,若需保留原文件可移除该参数 - 过程反馈:处理时会输出成功归档的文件路径,不符合要求的文件会给出警告提示
使用步骤
- 打开PowerShell终端
- 将脚本保存为
.ps1格式文件(例如ArchiveByDate.ps1) - 修改脚本中的
$targetFolder为你的目标文件夹路径 - 执行脚本:
.\ArchiveByDate.ps1
内容的提问来源于stack exchange,提问作者astrall.knight
相关产品推荐
相关产品推荐

