Я пытаюсь преобразовать все файлы RTF в файлы DOCX в указанной папке c и всех подпапках. Преобразованные файлы должны находиться в одной папке с исходными файлами. Имя преобразованных файлов не изменяется.
Этот код преобразует файлы, но не обрабатывает подпапки. Обрабатывается только верхняя папка.
foreach ($file in Get-ChildItem -Recurse -Force "C:test" -Filter *.rtf )
{
&("C:\Program Files\LibreOffice\program\soffice.exe") -headless -convert-to docx $file | Out-Null
}
Ниже код обрабатывает подпапки, но по некоторым причинам пропускает некоторые файлы.
Get-ChildItem "C:\test" -Filter *.rtf -Recurse -Force | foreach-Object {
set-location $_.directoryname
&("C:\Program Files\LibreOffice\program\soffice.exe") --convert-to docx $_.name
}
Наконец, у libreoffice есть опция выходного каталога, но я мог не заставить его работать.
foreach ($file in Get-ChildItem "C:\test" -Filter *.rtf)
{
&("C:\Program Files\LibreOffice\program\soffice.exe") -headless -convert-to docx -outdir $FolderName $file | Out-Null
}