Terminé encontrando una tubería de exportación, pero fue un dolor. Aquí están mis notas de hacer eso:
Apague sus redes para evitar que OneNote realice una larga sincronización de OneDrive después de cada exportación.
En la lista Cuadernos, expanda el cuaderno para ver todas las pestañas.
Haga clic derecho en una pestaña y haga clic en "Exportar ...".
Haga clic en el menú desplegable de tipo de archivo y presione Mpara seleccionar el .docx
formato. Presione Enterpara seleccionarlo.
Presione Enternuevamente para guardar el archivo exportado.
Repita los pasos 2-5 para cada pestaña en el cuaderno.
Configure Pandoc y abra una ventana de PowerShell o cmd.
cd en el directorio donde .docx
se encuentran los archivos exportados .
Para cada .docx
archivo exportado , use el siguiente comando de pandoc para convertirlo en markdown (reemplace journal
con el nombre de su archivo):
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Aquí hay una explicación del comando: --extract-media=''
le dice a pandoc que extraiga imágenes del .docx
archivo y las coloque en la subcarpeta predeterminada (llamada 'media' por defecto). --wrap=preserve
le dice a pandoc que no ajuste el archivo de salida con saltos de línea (que es el valor predeterminado). El siguiente campo es el nombre de archivo de entrada, y -o
significa 'salida', también lo journal.md
es el nombre de archivo de salida.
Si no desea dividir este archivo (por ejemplo, si su pestaña contenía solo una página), vaya al paso 15.
(Cuando esté haciendo un montón de estos, puede presionar la ↑tecla (flecha hacia arriba) para recuperar el comando anterior en el shell, luego editar el nombre del archivo).
Cree una nueva carpeta para almacenar las páginas en la pestaña. Para este ejemplo, en este momento todas las páginas de nuestra pestaña Diario en OneNote están agrupadas journal.md
. Cree una carpeta llamada journal
que almacenará las páginas separadas finales como archivos .md individuales.
Si hubiera alguna imagen en el .docx
archivo, se exportará a una nueva carpeta llamada media
. Arrastre la carpeta multimedia, si existe, a la carpeta que acaba de crear ahora. (Es por eso que necesitamos hacer cada operación de pandoc por separado, porque cada exportación creará una carpeta de medios separada, y queremos mantenerlos separados para que los enlaces en los archivos de descuento funcionen correctamente. Podríamos escribir un script inteligente para hacer todo esto automáticamente, pero llevará menos tiempo hacerlo manualmente, a menos que tenga una gran cantidad de cuadernos). (Nota: puede guardar un paso colocando el nombre de la carpeta deseada en las comillas simples del --extract-media=''
argumento, para .docx
archivos con imágenes, se creará una carpeta automáticamente para usted).
Abra una terminal bash y cd en el directorio que contiene el .md
archivo. La carpeta que creó en el paso 10 debe ser una subcarpeta de esta (a menos que arregle la ruta en el siguiente comando).
Si aún no lo ha hecho, haga clic en el ícono de la ventana de Windows Bash, haga clic en Propiedades, marque Modo de edición rápida y luego haga clic en Aceptar. Ahora haga clic en el icono de la ventana Bash de Windows nuevamente, esta vez haga clic en Valores predeterminados, marque el Modo Edición rápida y luego haga clic en Aceptar (para que las nuevas ventanas Bash que cree en el futuro recuerden esta configuración). Ahora puede seleccionar texto en el terminal y presionar Ctrl+ Cpara copiar, o hacer clic derecho en la ventana del terminal para pegar el texto en el portapapeles. Ahora podemos preparar nuestro comando en una ubicación separada y pegar rápidamente cada versión en Bash.
Personalice el siguiente comando y ejecútelo para cada .md
archivo que desee dividir en páginas individuales:
csplit ./journal.md --keep-files --prefix='journal/journalentry '
--suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(Escríbalo como una línea).
Como puede ver, journal.md
es el nombre de nuestro archivo de rebajas (en el directorio actual, indicado por ./
), la segunda aparición de journal
(después --prefix='
) es el nombre de nuestra subcarpeta que contendrá los archivos divididos y journalentry
es el nombre de cada archivo (seguido de un número de índice).
Si desea comprender el comando, aquí hay una explicación: --keep-files
todavía imprime archivos cuando se encuentran errores o al final del archivo, asegurando que la última página se imprima correctamente (ya que no termina en el patrón de nuestra expresión regular). --prefix
establece el esquema de nomenclatura de los archivos de salida. --suffix-format
nos permite establecer nuestra extensión de archivo ( .md
en este caso), pero debemos incluir %i
para la instrucción sprintf que genera el número de índice del archivo. --elide-empty-files
omite la salida de archivos vacíos, lo que no nos importa. Finalmente, la expresión regular, que comienza con '/
y termina con/-2'
, define cuándo dividir el archivo: dice "Cuando encuentre (/) al comienzo de la línea (^) lo siguiente (() lunes o (\ |) martes o miércoles o jueves o viernes o sábado o domingo () ) seguido de una coma, retroceda dos líneas (-2) "y divida el archivo allí, generando lo que tenemos hasta ahora. El bit final '{*}'
, repite el comando anterior indefinidamente, hasta llegar al final del archivo.
Arrastra los archivos .docx
y .md
a una carpeta, por ejemplo, una carpeta que creas ahora llamada intermediates
. O simplemente puede eliminarlos. Es bueno guardarlos por un tiempo, hasta que se sienta cómodo con su nuevo formato de archivo, en caso de que quiera regresar y hacer referencia a algo que sucedió durante el proceso de conversión. Moverlos a la carpeta de intermediarios ahora arruinará la posibilidad de olvidar dónde estamos y repetir los pasos.
Repita los pasos 9-14 para cada .docx
archivo que exportó de OneNote.
Ahora tiene una carpeta para cada pestaña, con un montón de .md
archivos separados , ¡una para cada página! Además de una media
carpeta en cada subcarpeta que tenía imágenes en la pestaña OneNote.
Recomiendo exportar cada una de sus libretas de OneNote como un .mht
archivo (página web de un solo archivo) o, si lo prefiere, a .pdf
. De esta manera, si se perdió el formato u otra información en algunos de sus archivos de descuento, debido a la conversión múltiple, siempre puede regresar y ver fácilmente cómo se suponía que debía verse en el .mht
archivo. Además, recomendaría exportar cada una de sus libretas de OneNote como un .onepkg
archivo (paquete de OneNote), por lo que tiene una buena copia de exportación final si alguna vez desea volver a abrir la notebook en OneNote en su formato de archivo original / original (esto podría ser útil si, por ejemplo, al .mht
archivo también le falta el formato original que desea recuperar).
Cuando termine cada cuaderno, haga clic con el botón derecho en el cuaderno en OneNote y haga clic en "Cerrar este cuaderno" para que no edite accidentalmente el cuaderno y tenga que volver a exportar sus nuevos cambios. Para las carpetas de rebajas, también creé una carpeta para cada cuaderno y puse todas las carpetas de pestañas en él.
Cuando haya terminado con todo el proyecto de exportación, puede ir a su OneDrive y eliminar todos los originales de sus cuadernos OneNote que se hayan sincronizado allí (¡asegúrese de que está haciendo una copia de seguridad de sus propios archivos ahora, por supuesto! Existe OneDrive para Linux, o usted podría intentar algo como Syncthing).
Finalmente, podemos cambiar el nombre de todos nuestros archivos .md a su título de página de OneNote, que es la primera línea de cada archivo, usando dos scripts. Crea los siguientes archivos:
Archivo 1: ~/scripts/rename-files-to-first-line.sh
for i in *md ; do mv -n "$i" "$(cat "$i"|head -n1|tr -d '\000-\037[]{}()/\?*')".md; done
Archivo 2: ~/scripts/recurse.sh
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Luego navegue a su carpeta de notas y ejecute el recurse.sh
comando usando el rename-files-to-first-line.sh
comando como argumento:
$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
Verá que el script revisa todos sus archivos de forma recursiva, arrojando algunos errores en archivos con primeras líneas extrañas (que no se convertirán en un nombre de archivo) y en otros casos extremos. Sin embargo, el mv
comando en rename-files-to-first-line
se ejecuta con argumento -n
, lo que evitará que sobrescriba los archivos. Puede haber algunas notas que no cambien de nombre, porque la primera línea en ellas está en blanco o algo extraño, pero puede corregir esos pocos archivos manualmente.
Disfruta de tu escape limpio de OneNote.
La otra respuesta no fue suficiente para mí, porque mis notas no son entradas de diario, pero encontré una solución usando Graph API de Microsoft . Esto significa que ni siquiera tiene que ejecutar OneNote, solo requiere que sus notas estén sincronizadas con su cuenta de Microsoft y luego puede obtener sus notas como HTML perfectamente formateado (que puede ver en el navegador o convertir al formato que prefiera) usando Pandoc).
La magia sucede en este script de Python . Ejecuta un servidor web local simple que puede usar para iniciar sesión en su cuenta de Microsoft y una vez que lo hace, descarga todas sus notas como HTML, más imágenes y archivos adjuntos en sus formatos originales, y los almacena en la jerarquía de archivos conservando la estructura original de sus cuadernos (incluido el orden de las páginas y las subpáginas).
Antes de poder ejecutar el script, debe registrar una "aplicación" en Microsoft Azure para que pueda acceder a la API Graph:
http://localhost:5000/getToken
. Registrarse.client_id
al comienzo del script Python.secret
en el script de Python.Entonces necesita instalar las dependencias de Python. Asegúrese de tener instalado Python 3.7 (o más reciente) e instale las dependencias con el comando
pip install flask msal requests_oauthlib
.Ahora puedes ejecutar el script. En una terminal, navegue hasta el directorio donde se encuentra el script y ejecútelo usando
python onenote_export.py
. Esto iniciará un servidor web local en el puerto 5000.En su navegador, vaya a http: // localhost: 5000 e inicie sesión en su cuenta de Microsoft. La primera vez que lo haga, también deberá aceptar que la aplicación puede leer sus notas de OneNote. (Esto no otorga a terceros acceso a sus datos, siempre y cuando no comparta la identificación y el secreto del cliente que creó en el portal de Azure). Después de esto, regrese a la terminal para seguir el progreso.
Nota: Microsoft limita cuántas solicitudes puede hacer dentro de un período de tiempo determinado. Por lo tanto, si tiene muchas notas, es posible que vea mensajes como este en el terminal:
Too many requests, waiting 20s and trying again.
esto no es un problema, pero significa que todo el proceso puede llevar un tiempo. Además, la sesión de inicio de sesión puede caducar después de un tiempo, lo que resulta en aTokenExpiredError
. Si esto sucede, simplemente vuelva a cargar http: // localhost: 5000 y el script continuará (omitiendo los archivos que ya descargó).fuente
pandoc --from html --to markdown -o output.md input.html
). Sin embargo, debe tenerse en cuenta que no todas las páginas de OneNote pueden representarse perfectamente en el descuento, por lo que puede perder algunos detalles de formato. Además, pandoc admite varios tipos de rebajas, por lo que es posible que desee leer la documentación para encontrar una que se adapte a su uso.Para exportar sus páginas de OneNote a Markdown individual (
.md
), debe instalar Joplin y Evernote .Como se sugiere en este enlace , primero importa las notas en Evernote. Luego, exporte todas las notas a un
.enex
archivo desde Evernote e impórtelas a Joplin.Joplin tiene la opción de exportar las notas como
.md
archivos.Nota: sugiero usar banderas en Evernote de antemano si desea agrupar sus notas, ya que la forma de Evernote de mantener la jerarquía entre las notas es diferente de OneNote.
fuente
He encontrado un trabajo no programático para esto.
TLDR;
Exporte notas de OneNote a Evernote, luego a Notion (Opcional) y luego exporte como archivos individuales con el formato que elija.
Realmente he tenido problemas para exportar mis notas de Notion, un vistazo en línea devolverá algunas formas realmente sucias de exportar y dividir páginas de OneNote y convertirlas en archivos md o html. ¡Que desastre!
Básicamente, puedes importar fácilmente tus secciones de OneNote en Evernote, después de descargar Evernote para escritorio es bastante fácil hacerlo, y desde allí, también es igualmente fácil importarlas en Notion.
Solo tenga en cuenta que es posible que desee importar secciones individuales si desea mantener la misma organización, de lo contrario, podría importar en masa todas las secciones, las páginas se etiquetarán con los nombres de las secciones y eso también se aplicará a Notion.
Tenga en cuenta que deberá haber sincronizado sus blocs de notas de OneNote iniciando sesión en su cuenta de Microsoft / Outlook y verificando que estén sincronizados con OneNote 2016.
Espero que esto ayude.
fuente