我正在尝试在文本文件的第 59 行插入今天的日期。我该怎么做?
第 59 行有 30 个空格,然后像这样。PowerShell 脚本运行后会更改日期,因此它必须是不会在文件上查找日期的脚本。
Rep.Setproperty "Date","1/1/2013"
我只想将日期更改为运行 PowerShell 脚本的日期。文本文件不是 PowerShell 脚本。
这是必须每周运行且无需用户交互的操作。这就是为什么我们需要通过 PowerShell 脚本更改日期。我查过您提供的链接,但我被卡住了,所以我在这里发帖。还有两件事我还可以做。
- 替换第 59 行的日期
- 发送今天的日期来替换原来的日期。
这是我目前所拥有的。
$date = Get-Date
$CMSReport = Get-content C:\reports\CMSReport.acsauto
$CMSReport | ForEach-Object {
if ($_.Readcount 59) {
$_ -replace '\w+','Rep.SetProperty "Dates","2/4/2013"'
} else {
$_
}
} |
Set-Content testCMS.acsauto
显然,“2/4/2013”必须用某种变量来改变,该变量将获取运行命令的日期。
答案1
为什么要使用 PowerShell 进行一次性字符串匹配/替换?如果您需要在一堆文件中重复执行此操作或在单个文件中多次替换,那么情况就不同了,但编写脚本执行此操作可能比执行一次性替换(甚至二十次)花费更长的时间。
无论如何,您需要的东西都可以在这里找到:
融入到你的场景中:
$infile = "C:\myinputfile.txt"
$outfile = "C:\myoutputfile.txt"
$content = Get-Content -Path $infile
$content[58] = $content[58] -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