Scripting

使用 powershell 替換文本文件中的行或日期

  • February 4, 2013

我正在嘗試在第 59 行的文本文件中插入今天的日期。我該怎麼做?

第 59 行有大約 30 個空格,然後讀起來像這樣。在 PowerShell 腳本執行後,它會更改日期,因此它必須是不會在文件中查找日期的東西。

                               Rep.Setproperty "Date","1/1/2013"

我只想將日期更改為執行 PowerShell 腳本的日期。文本文件不是 PowerShell 腳本,所以。

這是必須每週執行的東西,沒有使用者互動。這就是為什麼我們需要通過 PowerShell 腳本更改日期。我已經查看了您提供的連結,但我被卡住了,這就是我在這裡發布的原因。我還有兩件事可以做。

  1. 替換第 59 行的日期
  2. 發送今天的日期以替換那裡的任何內容。

這就是我到目前為止所擁有的。

$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”​​必須使用某種變數來更改,該變數將採用命令執行的日期。

為什麼使用 PowerShell 進行一次性字元串匹配/替換?如果這是您需要在一堆文件中重複執行或在單個文件中多次替換的操作,那麼情況就不同了,但是編寫腳本執行此操作可能比一次性替換要花費更長的時間(甚至二十個)。

無論如何,您需要的都可以在這裡找到:

https://blogs.technet.com/b/heyscriptingguy/archive/2008/01/17/how-can-i-use-windows-powershell-to-replace-characters-in-a-text-file.aspx?Redirected=true

安裝到您的場景中:

$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

引用自:https://serverfault.com/questions/475325