Faq/General/150/it

Nota
Verrà presa in considerazione la conversione da .docx a .odt, ma la sintassi ed i passaggi sono gli stessi per tutti gli altri formati supportati da LibreOffice.

Contesto
In MS-Windows 10 potete usare un comando come soffice.exe --convert-to odt my_document.docx al fine di convertire my_document.docx dal formato MS docx al formato open document (odt). La funzione --convert-to, mediante l'uso dei caratteri jolly comunemente usati per i file, permette di specificare un insieme di documenti da convertire. Per esempio: è possibile usare *.docx nel caso in cui, nella cartella corrente, abbiate numerosi file .docx da convertire.

Problema
Quando questo comando viene usato nel terminale della Command shell di Windows, non funziona. Sembra che tutte le conversioni siano avviate contemporaneamente e, poiché dalla riga di comando non è possibile eseguire contemporaneamente due istanze di LibreOffice (soffice.exe), l'esecuzione non termina. Nel migliore dei casi, otterrete la conversione di uno o due file, in ogni caso dovrete comunque interrompere manualmente l'esecuzione di molti processi di LibreOffice bloccati nel sistema (a quanto sembra, il doppio del numero dei file trovati).

Soluzione
Un modo semplice per superare questo problema è quello di usare il nuovo Subsystem per l'ambiente Linux fornito da MS per le versioni di Windows 10. Probabilmente dovrete installarlo, cosa che potete fare abbastanza semplicemente se seguite la documentazione che si trova a questo indirizzo: https://docs.microsoft.com/en-us/windows/wsl/install-win10.

Una volta fatto, avrete accesso ad un terminale della bash, che viene eseguito sul sistema base di Windows e la funzione --convert-to funzionerà correttamente in modo sincrono.

In breve

 * 1) Identificate il percorso in cui si trova l'eseguibile soffice.exe.
 * 2) dopo aver creato una cartella di destinazione, con il comando cd spostatevi nella cartella che contiene i file da convertire.
 * 3) Eseguite questo comando :  --convert-to odt --outdir  *.docx

Esempio :
il comando "/mnt/c/Program Files/LibreOffice 5/program/soffice.exe" --convert-to odt --outdir ./Convertiti_in_odt *.docx converte i file docx presenti nella cartella corrente nel rispettivo equivalente nella sottocartella ./Convertiti_in_odt.

Perchè ?
WSL (Windows Subsystem for Linux) monta un proprio file system completo. Perciò, la sintassi per indicare il percorso di un file all'interno dell'albero delle cartelle è diversa da quella di Windows. La prima differenza è il punto che funge da radice: in Windows di solito è C:\, mentre l'equivalente nel terminale della bash è /mnt/c/. Inoltre, il carattere usato come separatore in Windows è \, mentre nella bash è / come nei sistemi Unix. Per il resto, le regole sono le stesse, il terminale della bash supporta lo stesso insieme di caratteri del terminale di Windows, così come i nomi di file lunghi ed i nomi di file contenenti degli spazi, purché questi siano racchiusi tra virgolette doppie (").

Come comporre il comando?
Il modo più semplice è quello di esaminare il collegamento che usate ogni volta che avviate LibreOffice. Fate un clic su di esso con il pulsante destro del mouse, quindi selezionate "Proprietà", infine copiare il contenuto del campo "Destinazione". Nel esempio visto prima, sarà "C:\Program Files\LibreOffice 5\program\soffice.exe". A questo punto modificate la sintassi adeguandola a quanto richiesto dalla bash, come sopra illustrato, in modo da ottenere questo: "/mnt/c/Program Files/LibreOffice 5/program/soffice.exe" Fate attenzione: Unix tratta diversamente le lettere maiuscole e minuscole, Windows no.

Il resto lo avete già visto sopra.

Conclusione
L'uso del terminale della bash in Windows è un modo semplice per convertire molti file da un formato ad un altro usando da riga di comando una funzione integrata in LibreOffice. Funziona tranquillamente.

L'alternativa più semplice: interattivamente
Usare la procedura guidata per la conversione dei documenti integrata in LibreOffice è ancora più semplice, così come illustrato qui: https://help.libreoffice.org/latest/en-US/text/shared/autopi/01130000.html.

Potete avviarla facendo clic nel menu File - Procedure guidate - Convertitore di documenti...

Alcuni utenti riferiscono di aver dovuto suddividere i loto file in gruppi da 200, in quanto la procedura alle volte si bloccava.

The long description of the problem
The problem is not that "all the conversions are started simultaneously". It's simply that LibreOffice's  in fact does not support using wildcards itself, and only works on non-Windows systems because they process the wildcards in their shells (and of course, these shells also work on Windows, like with Cygwin or WSL).

What does this mean? This means that in Bash, when you send a command like, the command is first analyzed by Bash, and it finds the   there, and enumerates every file that matches the mask, puts their names into one string, and substitutes the   with something like. This is what LibreOffice sees.

Windows' cmd.exe does not do that, and sends the  to LibreOffice unmodified. LibreOffice simply tries to open the file named, and fails. That's all.

In Windows' cmd.exe, the pre-processing should be done explicitly, like this:

for %f in ("path\to\*.doc") do "C:\Program Files\LibreOffice\program\soffice" --convert-to odt "%f"

The enhancement request to implement own wildcard processing is.