Faq/General/150/es

    From The Document Foundation Wiki
    < Faq‎ | General
    This page is a translated version of the page Faq/General/150 and the translation is 100% complete.

    Uso de la función --convert-to en Windows10

    Nota

    Consideraremos la conversión de .docx a .odt, pero la sintaxis y los pasos son los mismos para otros formatos que puede gestionar LibreOffice.


    Contexto

    En MS-Windows 10 podemos usar un comando como soffice.exe --convert-to odt mi_documento.docx para convertir mi_documento.docx del formato MS docx al formato de open document (odt). La función --convert-to debería permitir especificar un conjunto de documentos utilizando la sintaxis general de comodines para archivos. Por ejemplo, usando *.docx cuando tiene varios archivos .docx que quiere convertir en un determinado directorio.


    Problema

    Pero con el intérprete de comandos de Windows, no funciona correctamente. Parece que todas las conversiones se inician simultáneamente, y dado que dos instancias de LibreOffice (soffice.exe) no pueden ejecutarse al mismo tiempo cuando se inician desde la línea de comandos, el proceso nunca terminará. En el mejor de los casos, terminará con uno o dos archivos convertidos, pero en cualquier caso, tendrá que eliminar manualmente un montón de procesos de LibreOffice abiertos en el sistema (el doble de la cantidad de archivos encontrados, a primera vista).


    Solución

    Para solventar esto, una forma sencilla es utilizar el nuevo Subsistema de Windows para el entorno Linux (WSL) proporcionado por MS para su versión 10 de Windows. Puede que tenga que instalarlo, lo que es bastante sencillo si sigue la documentación de https://docs.microsoft.com/es-es/windows/wsl/install .


    Una vez hecho esto, tendrá acceso a un un intérprete de comandos bash que se ejecuta por encima del sistema base de Windows, y la función --convert-to funcionará correctamente, en modo síncrono.


    Usando el Intérprete de comandos

    1. Identifique la ruta a soffice.exe.
    2. cambie al directorio que contiene los archivos a convertir, después de haber creado un directorio de destino.
    3. Ingrese este comando: <ruta a soffice.exe> ​​--convert-to odt --outdir <directorio_de_salida> * .docx


    Ejemplo:

    "/mnt/c/Archivos de Programa/LibreOffice5/program/ soffice.exe" --convert-to odt --outdir ./Convertidos_a_odt * .docx"

    Convertirá los archivos .docx del directorio actual a su equivalente .odt en el subdirectorio ./Convertidos_a_odt.


    ¿Por qué esta sintaxis?

    WSL monta un sistema de archivos completo por sí solo. La sintaxis para especificar una ubicación de archivo en el árbol de directorios es diferente a la de Windows. La primera diferencia es el punto raíz: bajo Windows suele ser C:\, el equivalente en el shell bash es /mnt/c/. El separador de directorios en Windows es \, en bash es el de Unix /. Por lo demás, las reglas son las mismas, el intérprete de comandos bash admite el mismo conjunto de caracteres que el intérprete de comandos de Windows, También los nombres de archivo largos o nombres de archivo con espacios, siempre tienen que estar delimitados por comillas dobles (").


    ¿Cómo componer el comando?

    La forma más sencilla es examinar el acceso directo que utiliza cada vez que inicia LibreOffice: Haga clic derecho en él, luego en "Propiedades", y luego copie el contenido del campo "Destino". En el ejemplo dado, será "C:\Archivos de programa\LibreOffice5\program\soffice.exe". Luego, ajuste la sintaxis a los requisitos de bash como se describió anteriormente, para obtener: "/mnt/c/Archivos de Programa/LibreOffice5/program/soffice.exe". Cuidado, Unix distingue entre mayúsculas y minúsculas, Windows no.


    Con eso bastará.


    Conclusión

    Usar el shell bash en Windows es una manera fácil de convertir un lote de archivos de un formato a otro usando la función de línea de comandos incorporada de LibreOffice. Funciona silenciosamente.


    La forma más sencilla, interactiva

    Es incluso más sencillo utilizar el Asistente de conversión de documentos de LibreOffice incorporado


    Puede iniciarlo haciendo clic en el menú Archivo ▸ Asistentes ▸ Conversor de documentos...


    Algún usuario ha informado que tuvo que fraccionar su lote de archivos en grupos de 200 porque el proceso fallaba a veces.

    La descripción real del problema

    El problema no es que "todas las conversiones se inicien simultáneamente". Es simplemente que --convert-to de LibreOffice de hecho no admite el uso de comodines, y no funciona con el intérprete de comandos (cmd.exe) de Windows porque a diferencia de este intérprete de comandos, los intérpretes de comandos de otros sistemas procesan los comodines dentro del mismo intérprete (de hecho, otros intérpretes que funcionan en Windows como Cygwin o WSL los procesan correctamente).

    ¿Qué significa esto? Esto significa que Bash (intérprete WLS), cuando envía un comando como soffice --convert-to odt path/to/*. Doc, primero analiza el comando y encuentra la ruta /to/*.doc enumera todos los archivos que coinciden con la máscara, pone sus nombres en una cadena y sustituye la ruta de /a/*.doc con algo como ruta/a/1.doc ruta/a/2.doc ruta/a/345.doc. y Esto es lo que traslada a LibreOffice.

    El cmd.exe de Windows no hace eso y envía la ruta/a/*.Doc a LibreOffice sin modificarla. LibreOffice simplemente intenta abrir el archivo llamado *.doc y falla

    En cmd.exe de Windows, el preprocesamiento debe realizarse explícitamente, de la siguiente manera:

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

    La solicitud de mejora para implementar el propio procesamiento de comodines es tdf#48413.