首页 > 解决方案 > 如何使用 power shell 或批处理脚本将文件名从 abc_10072019.txt 转换为 abc_20191007.txt

问题描述

abc_10072019.txt如何使用 PowerShell 或批处理脚本转换文件名中的日期格式例如:abc_20191007.txt

标签: batch-filefilenamesdate-conversion

解决方案


对于基本的解决方案,您可以尝试:

@For /F "Delims=|" %%# In ('^""%__AppDir__%where.exe" .:*_????????.txt 2^>NUL^"')Do @Set "_=%%~n#"&Call Echo=Ren "%%#" "%%_:~,-8%%%%_:~-4%%%%_:~-8,4%%%%~x#"

如果您对输出感到满意,请移除Echo=以实际执行重命名。

请注意,没有进行检查以确保基本名称的最后八个字符是有效的日期字符串。


这是一个潜在的选项,可以从运行:

@"%__AppDir__%WindowsPowerShell\v1.0\powershell.exe" -NoP "GCI -Filt '*_????????.txt' -EA SilentlyContinue|?{!$_.PSIsContainer -And $_.Name -Match '_[\d]{8}\.txt$'}|%%{RnI $_.Name $([DateTime]::ParseExact($_.BaseName.Split('_')[-1],'MMddyyyy',$Null)).ToString('yyyyMMdd') -WI}"

如果您对输出感到满意,请移除 -WI以实际执行重命名。


推荐阅读