Назад | Перейти на главную страницу

замена строки или даты в текстовом файле с помощью powershell

Я пытаюсь вставить сегодняшнюю дату в текстовый файл в строку 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? Перенаправлено = правда

Встраивается в ваш сценарий:

$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