You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本匹配替换文件中MM.dd.yy格式日期问题

解决PowerShell脚本替换MM.dd.yy格式日期的问题

问题分析

你当前使用的正则表达式匹配的是yyyy-MM-dd格式的整行日期,和目标的MM.dd.yy格式完全不符;同时正则里的^和$锚点要求日期占据整行,但你的示例文件中日期是在Date: 之后,导致根本匹配不到目标内容。

修正后的正则表达式

要精准匹配MM.dd.yy格式(比如10.12.22),可以使用以下正则:

$regexDate = '\b(0[1-9]|1[012])\.(0[1-9]|[12][0-9]|3[01])\.\d{2}\b'
  • \b是单词边界,避免误匹配其他数字串中的类似格式
  • (0[1-9]|1[012])匹配两位合法月份(01-12)
  • (0[1-9]|[12][0-9]|3[01])匹配两位合法日期(01-31)
  • \.\d{2}匹配两位年份后缀

如果允许月份/日期是单数字格式(比如1.2.22),可以把正则调整为:

$regexDate = '\b(0?[1-9]|1[012])\.(0?[1-9]|[12][0-9]|3[01])\.\d{2}\b'

修正后的PowerShell脚本

直接通过管道读写同一个文件可能引发文件锁定问题,建议先读取内容到变量再写入:

# 定义匹配MM.dd.yy格式的正则
$regexDate = '\b(0[1-9]|1[012])\.(0[1-9]|[12][0-9]|3[01])\.\d{2}\b'
# 获取当前日期并格式化为MM.dd.yy
$currentDate = Get-Date -UFormat "%m.%d.%y"

# 读取文件内容、替换日期后重新写入
$content = Get-Content -Path "template1.dat" -Raw
$content -Replace $regexDate, $currentDate | Out-File -Path "template1.dat" -Encoding utf8
  • -Raw参数一次性读取整个文件,处理更高效,也避免逐行处理的潜在问题
  • 指定-Encoding utf8可以防止文件编码被意外修改

测试效果

针对你的示例输入文件,运行脚本后,Date: 10.12.22会被替换为当前日期的MM.dd.yy格式,比如当前是2024年5月20日,该行会变成Date: 05.20.24。

内容的提问来源于stack exchange,提问作者GamerzKing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:35:56