使用PowerShellreplace文本文件中的行或date

我正在尝试在第59行的文本文件中插入今天的date。我该怎么做?

第59行有30个空格,然后像这样读取。 运行PowerShell脚本后,它将更改date,因此它必须是不查找文件date的内容。

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

我只想将date更改为运行PowerShell脚本的date。 这个文本文件不是PowerShell脚本。

这是必须每周运行,没有用户交互。 这就是为什么我们需要通过PowerShell脚本进行date更改。 我查了你提供的链接,但我卡住了,这就是为什么我张贴在这里。 有两件事我仍然可以做。

  1. 在第59行更换date
  2. 发送今天的date,以取代那里。

这是我迄今为止。

 $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”​​将不得不用一些variables来改变,这些variables会取得命令运行的date。

为什么使用PowerShell进行一次性string匹配/replace? 如果你需要在一堆文件中重复执行这些操作,或者在一个文件中多次replace,那么情况就不一样了,但是这样做可能需要更长的时间才能使脚本执行此操作,而不是一次性更换(甚至二十个)。

无论如何,你需要在这里find:

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

装入你的场景:

 $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