如何用PowerShell拆分文件名并导出为CSV文件?
从PDF文件名提取信息生成CSV的PowerShell脚本
需求说明
文件夹内存在大量命名格式为yyyy-mm-dd_Discription_$Amount.pdf的PDF文件,需要生成包含Date(日期)、Description(描述)、**Amount(金额)**三列的CSV文件。
解决方案脚本
$Directory = "C:\path to directory" # 仅筛选PDF文件,提升处理效率 Get-ChildItem -Path $Directory -Recurse -Force -Filter "*.pdf" | ForEach-Object { # 用正则匹配固定命名格式,提取对应字段 if ($_.BaseName -match '^(\d{4}-\d{2}-\d{2})_(.*)_(\$[\d.]+)$') { [PSCustomObject]@{ Date = $matches[1] Description = $matches[2] Amount = $matches[3] -replace '\$', '' # 可选:移除$符号,仅保留数字金额 } } else { # 对不符合格式的文件做异常标记 [PSCustomObject]@{ Date = "格式异常" Description = $_.BaseName Amount = "N/A" } } } | Export-Csv -Path "./output.csv" -NoTypeInformation -Encoding UTF8
关键说明
- 精准筛选文件:通过
-Filter "*.pdf"仅处理目标PDF文件,避免无关文件干扰。 - 正则字段提取:
^(\d{4}-\d{2}-\d{2}):匹配并提取yyyy-mm-dd格式的日期;(.*):提取两个下划线之间的描述内容(支持描述含空格,若描述不含下划线可替换为([^_]+));(\$[\d.]+):匹配带$符号的金额,可选通过-replace '\$', ''移除符号,仅保留数字。
- 异常处理:对不符合命名格式的文件,生成标记行,方便后续排查。
内容的提问来源于stack exchange,提问作者Bhavin
相关产品推荐
相关产品推荐

