Я ищу, чтобы создать массив файлов (в частности, PDF) на основе имен файлов в Powershell. Все файлы находятся в одном каталоге. Я потратил пару дней на поиски и не могу найти ничего, что имеет примеры этого или что-то близкое, но можно изменить. Вот мой пример имен файлов:
AR - HELLO.pdf
AF - HELLO.pdf
RT - HELLO.pdf
MH - HELLO.pdf
AR - WORLD. pdf
AF - WORLD.pdf
RT - WORLD.pdf
HT - WORLD.pdf
....
Я хочу объединить все файлы, заканчивающиеся на «ПРИВЕТ» в массив и «МИР» в другой массив и т. Д.
Я застрял довольно рано в процессе, поскольку я новичок в создании сценариев, но вот мое печальное начало:
Get-ChildItem *.pdf
Where BaseName -match '(.*) - (\w+)'
Обновленная информация ... Я не знаю имени после "-", поэтому использование регулярных выражений работает.
Моя конечная цель - объединить PDF-файлы основанный на соответствующем тексте после "-" в имени файла и наиболее базовом c коде для этого:
$file1 = "1 - HELLO.pdf"
$file2 = "2 - HELLO.PDF"
$mergedfile = "HELLO.PDF"
Merge-PDF -InputFile $file1, $file2 -OututFile $mergedfile
Я также получил Merge-PDF для работы с использованием этого кода который объединяет все PDF-файлы в каталоге:
$Files = Get-ChildItem *.pdf
$mergedfiles = "merged.pdf"
Merge-PDF -InputFile $Files -OutputFile $mergedfiles
Используя этот код из @Mathias, часть суффикса $ в -OutputFile работает, но часть -InputFile возвращает ошибку «За исключением Ион вызывает "Close" с аргументом (ами) "0" "
$groups = Get-ChildItem *.pdf |Group-Object {$_.BaseName -replace
'^.*\b(\w+)$','$1'} -AsHashTable
foreach($suffix in $groups.Keys) {Merge-PDF -InputFile $(@($groups[$suffix]))
-OutputFile "$suffix.pdf"}
Для -InputFile я пробовал много разных вариантов, и я продолжаю получать ошибку аргументов" 0 ". Значения в Hashtable кажутся правильными, поэтому я не уверен, почему это не работает.
Спасибо