我希望获得与此主题中讨论的非常相似的结果: https://serverfault.com/questions/475325/replacing-a-line-or-date-in-a-text-file-using-powershell
我遇到了两个问题: 1)我的文件中的日期略有不同,因此脚本不会提取它,并且我所需的日期输出格式也不同。我需要CCYY-MM-DD格式的日期(与输入相同)
以下是我的文本文件起始行40的几行,因此日期在第44行:
</script>
<div id="divMain" style="background:transparent;margin-left:auto;margin-right:auto;position:relative;width:960px;height:640px;">
<div style="position:absolute;left:15px;top:79px;width:650px;height:508px;">
<iframe src="http://free.timeanddate.com/countdown/i5bwxdc1/n269/cf12/cm0/cu4/ct4/cs1/ca0/cr0/ss0/cac000/cpc000/pcf9f/tcfff/fs225/szw576/szh243/tatAantal%20minute%20en%20sekondes/tac00f/tptTe%20laat/tpcf00/matvoor%20ons%20in%20die%20kar%20moet%20klim/mac00f/mptmet/mpc000/iso2016-08-18T07:10:00/bas4/pd2" allowTransparency="true" frameborder="0" width="1065" height="280"></iframe>
</div>
<img src="wpimages/wpa1e7d92d_06.png" alt="" width="39" height="36" style="position:absolute;left:333px;top:43px;width:39px;height:36px;">
</div>
下面的powershell脚本不会在我的文件中选取日期字符串,也不会转换/替换日期,但会像输入文件一样写出文件
我试过的Powershell脚本:
$infile = "C:\temp\input.html"
$outfile = "C:\temp\output.html"
$content = Get-Content -Path $infile
$content[71] = $content[71] -replace "([1-9]|0[1-9]|1[012])[- /.]([1-9]|0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d", [datetime]::Today.ToShortDateString()
$content | Set-Content $outfile
非常感谢任何帮助。
亲切的问候
筛板
答案 0 :(得分:0)
更改-replace
运算符的右侧操作数以满足您的需求:
$string -replace '(19|20)\d\d[- /.]([1-9]|0[1-9]|1[012])[- /.]([1-9]|0[1-9]|[12][0-9]|3[01])', [datetime]::Today.ToString('yyyy-MM-dd')
如果您需要专门更改第44行,请定位索引43
:
$content[43] = $content[43] -replace '(19|20)\d\d[- /.]([1-9]|0[1-9]|1[012])[- /.]([1-9]|0[1-9]|[12][0-9]|3[01])', [datetime]::Today.ToString('yyyy-MM-dd')