PowerShell ForEach libreoffice преобразование - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь преобразовать все файлы 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
}

1 Ответ

0 голосов
/ 03 апреля 2020
Get-ChildItem "D:\OneDrive - University of Houston\Anaconda3\JupyterFiles\audio\EarningsCalls\2020" -Filter *.rtf -Recurse -File| foreach-Object {
    set-location $_.directoryname
    write-host ($_)
    write-host ($_.FullName)
    write-host ($_.DirectoryName)
    &("C:\Program Files\LibreOffice\program\soffice.exe") --convert-to docx -outdir $_.DirectoryName $_ | Out-Null  
}

Над кодом обрабатывает все файлы и преобразует их. Спасибо всем.

...