Вы можете использовать Get-ChildItem
для получения списка файлов PDF. Затем используйте что-то вроде Select-String
для извлечения необходимых данных.
$Files = Get-ChildItem -Path SomeFilePath -Filter '*_*_*_*.pdf'
$Files.BaseName | Select-String -Pattern '_([^_]+)' -AllMatches | Foreach-Object {
$_.Matches[-1].Groups[1].Value # SUFFIX
$_.Matches[-3].Groups[1].Value # TEXT
}
Поскольку вы не уточняете, что вы хотите делать с извлеченными данными, здесь многое остается желательным.
Если вы просто хотите удалить текст между подчеркиванием с помощью NewValue
, вы можете сделать следующее. $Position
- это элемент, который вы хотите удалить между двумя подчеркиваниями, начиная с 1
.
$Position = 1
Get-ChildItem -filter *_*_*.pdf | Foreach-Object {
$temp = [collections.generic.list[string]]@($_.Name -split '_')
$temp.RemoveAt($Position)
$temp -join '_'
}
Если вы хотите заменить текст между двумя подчеркиваниями, вы можете выполнить следующее и просто изменить $Position
для удовлетворения ваших потребностей.
$Position = 1
Get-ChildItem -filter *_*_*.pdf | Foreach-Object {
$temp = [collections.generic.list[string]]@($_.Name -split '_')
$temp[$Position] = 'NewValue'
$temp -join '_'
}