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.