在PowerShell中从文件名提取日期出现FormatException错误如何解决
PowerShell文件名提取日期FormatException错误修复方案
错误原因
触发报错的核心原因有两个:
- 索引取值错误:用
_拆分示例文件名TBTT_UAT_01012021_000019.csv时,得到的数组索引从0开始计数,对应内容如下:- 索引0:
TBTT - 索引1:
UAT - 索引2:
01012021(目标日期字段) - 索引3:
000019.csv
原代码中取[4]属于越界取值,实际拿到了索引3的序号+后缀字符串,无法解析为日期格式。
- 索引0:
- 日期格式不匹配:目标日期字符串格式为无分隔符的
ddMMyyyy,原代码传入的格式参数为带斜杠的dd/MM/yyyy,即使拿到正确的日期字符串也会解析失败。
修复后代码
$splitName = $filename -split '_' # 增加拆分结果校验,避免不符合命名规则的文件触发报错 if ($splitName.Count -ge 3) { $fileDateText = $splitName[2] # 可选操作:清理字符串里的非数字字符,避免后缀残留影响解析 $fileDateText = $fileDateText -replace '[^0-9]', '' $fileDate = [System.DateTime]::ParseExact($fileDateText, "ddMMyyyy", [System.Globalization.CultureInfo]::InvariantCulture) } else { Write-Warning "文件名 $filename 不符合约定命名规则,已跳过处理" }
如果实际文件名的下划线分隔段数和示例不同,调整$splitName[2]中的索引值,对应到日期字段所在的位置即可。
内容的提问来源于stack exchange,提问作者Bal Singh
相关产品推荐
相关产品推荐

