Нужно вытащить содержимое из текстового файла и увеличить имя файла - PullRequest
0 голосов
/ 21 октября 2019

Я хочу извлечь содержимое из текстового файла, который является именем файла. Я хочу увеличить это имя на 1 номер. Я не могу собрать правильные части сценария, чтобы сделать эту работу.

У меня есть текстовый файл, который служит моим файлом журнала. Logfile.txt, внутри этого файла журнала есть имя файла log_1.txt

Я хочу получить содержимое файла logfile.txt, который долженбыть log_1.txt, увеличивать число так, чтобы оно стало log_2.txt, а затем поместить его обратно в файл журнала.

Это то, что я пытался сделать, но продолжаю получать. Вы не можете вызвать метод для выражения с нулевыми значениями

$latest = get-content c:\PS1\Output.txt

$newFileName = $latest.BaseName.Split('_')[0] + "_" + ([int]$latest.BaseName.Split('_')[1] + 1) + $latest.Extension

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Чтобы предоставить более краткую PowerShell Core альтернативу эффективное решение Джеффа Цейтлина :

PS> 'log_9.txt' -replace '(?<=_)\d+(?=\.)', { 1 + $_.Value }
log_10.txt

См. этот ответ для объясненияэтой техники.

0 голосов
/ 21 октября 2019

$latest это не файловый объект, это строка. Строки не имеют basename с. Предполагая, что имя вашего файла, хранящееся в файле, точно соответствует указанному вами, попробуйте

$OldFileName = Get-Content -Path "C:\PS1\Output.txt"
$FileBaseName,$FileExtension = $OldFileName.Split('.')
$FileBase,$FileIndex = $FileBaseName.Split('_')
$FileIndex += 1
$NewFileName = ($FileBase,$FileIndex -join "_"),$FileExtension -join "."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...