J'ai fini par trouver un pipeline d'exportation, mais c'était pénible. Voici mes notes de faire cela:
Désactivez votre ou vos réseaux pour empêcher OneNote d'effectuer une longue synchronisation OneDrive après chaque exportation.
Dans la liste des blocs-notes, développez le bloc-notes pour voir tous les onglets.
Faites un clic droit sur un onglet et cliquez sur "Exporter ...".
Cliquez sur la liste déroulante de type de fichier et appuyez sur Mpour sélectionner le .docx
format. Appuyez Enterpour le sélectionner.
Appuyez à Enternouveau pour enregistrer le fichier exporté.
Répétez les étapes 2 à 5 pour chaque onglet du bloc-notes.
Configurez pandoc et ouvrez une fenêtre PowerShell ou cmd.
cd dans le répertoire où se trouvent les .docx
fichiers exportés .
Pour chaque .docx
fichier exporté , utilisez la commande pandoc suivante pour le convertir en démarque (remplacez journal
par le nom de votre fichier):
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Voici une explication de la commande: --extract-media=''
indique à pandoc d'extraire des images du .docx
fichier et de les placer dans le sous-dossier par défaut (nommé 'media' par défaut). --wrap=preserve
indique à pandoc de ne pas envelopper le fichier de sortie avec des sauts de ligne (qui est la valeur par défaut). Le champ suivant est le nom du fichier d'entrée et -o
signifie «sortie», tout journal.md
comme le nom du fichier de sortie.
Si vous ne souhaitez pas fractionner ce fichier (par exemple, si votre onglet ne contient qu'une seule page), passez à l'étape 15.
(Lorsque vous en faites plusieurs, vous pouvez appuyer sur la touche ↑(flèche vers le haut) pour rappeler la commande précédente dans le shell, puis modifier le nom de fichier.)
Créez un nouveau dossier pour stocker les pages dans l'onglet. Pour cet exemple, en ce moment, toutes les pages de notre onglet Journal dans OneNote sont écrasées ensemble journal.md
. Créez un dossier appelé journal
qui stockera les dernières pages séparées sous forme de fichiers .md individuels.
S'il y avait des images dans le .docx
fichier, celles-ci seront exportées vers un nouveau dossier appelé media
. Faites glisser le dossier multimédia, s'il existe, dans le dossier que vous venez de créer maintenant. (C'est pourquoi nous devons effectuer chaque opération pandoc séparément, car chaque exportation créera un dossier multimédia distinct, et nous voulons les garder séparés afin que les liens dans les fichiers de démarque fonctionnent correctement. Nous pourrions écrire un script intelligent pour faire tout cela automatiquement, mais il faudra moins de temps pour le faire manuellement, sauf si vous avez un grand nombre de blocs-notes.) (Remarque: vous pouvez enregistrer une étape en mettant votre nom de dossier souhaité dans les guillemets simples de l' --extract-media=''
argument - pour les .docx
fichiers contenant des images, un dossier sera créé automatiquement pour vous.)
Ouvrez un terminal bash et cd dans le répertoire contenant le .md
fichier. Le dossier que vous avez créé à l'étape 10 doit être un sous-dossier de celui-ci (sauf si vous corrigez le chemin d'accès dans la commande suivante).
Si vous ne l'avez pas déjà fait, cliquez sur l'icône de la fenêtre Windows Bash, cliquez sur Propriétés, vérifiez le mode QuickEdit, puis cliquez sur OK. Maintenant, cliquez à nouveau sur l'icône de la fenêtre Windows Bash, cette fois cliquez sur Paramètres par défaut, vérifiez le mode QuickEdit, puis cliquez sur OK (de sorte que les nouvelles fenêtres Bash que vous créerez à l'avenir se souviendront de ce paramètre). Vous pouvez maintenant sélectionner du texte dans le terminal et appuyez sur Ctrl+ Cpour copier, ou cliquez avec le bouton droit sur la fenêtre du terminal pour coller le texte dans le presse-papiers. Nous pouvons maintenant préparer notre commande dans un emplacement séparé et coller rapidement chaque version dans Bash.
Personnalisez la commande suivante et exécutez-la pour chaque .md
fichier que vous souhaitez diviser en pages individuelles:
csplit ./journal.md --keep-files --prefix='journal/journalentry '
--suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(Tapez-le sur une seule ligne.)
Comme vous pouvez le voir, journal.md
est le nom de notre fichier de démarque (dans le répertoire courant, désigné par ./
), la deuxième occurrence de journal
(après --prefix='
) est le nom de notre sous-dossier qui contiendra les fichiers divisés, et journalentry
c'est ainsi que chaque fichier sera nommé (suivi d'un numéro d'index).
Si vous voulez comprendre la commande, voici une explication: --keep-files
imprime toujours les fichiers lorsque des erreurs ou la fin du fichier sont rencontrées, assurant que la dernière page sera sortie correctement (car elle ne se termine pas dans le modèle de notre expression régulière). --prefix
définit le schéma de dénomination des fichiers de sortie. --suffix-format
nous permet de définir notre extension de fichier ( .md
dans ce cas), mais nous devons inclure %i
pour l'instruction sprintf qui génère le numéro d'index du fichier. --elide-empty-files
saute la sortie des fichiers vides, ce qui nous importe peu. Enfin, l'expression régulière, qui commence '/
et se termine par/-2'
, définit quand fractionner le fichier: il indique "Lorsque vous trouvez (/) au début de la ligne (^) le (() lundi ou (\ |) mardi ou mercredi ou jeudi ou vendredi ou samedi ou dimanche suivant () ) suivi d'une virgule, reculez de deux lignes (-2) "et divisez-y le fichier, en affichant ce que nous avons jusqu'à présent. Le dernier bit '{*}'
,, répète la commande précédente indéfiniment, jusqu'à la fin du fichier.
Faites glisser les fichiers .docx
et .md
dans un dossier, par exemple un dossier que vous créez maintenant appelé intermediates
. Ou vous pouvez simplement les supprimer. Il est bon de les enregistrer pendant un certain temps, jusqu'à ce que vous soyez à l'aise avec votre nouveau format de fichier, au cas où vous voudriez revenir en arrière et référencer quelque chose qui s'est produit pendant le processus de conversion. Les déplacer dans le dossier des intermédiaires maintenant rude la chance d'oublier où nous en sommes et de répéter les étapes.
Répétez les étapes 9 à 14 pour chaque .docx
fichier que vous avez exporté à partir de OneNote.
Maintenant, vous avez un dossier pour chaque onglet, avec un tas de .md
fichiers séparés , un pour chaque page! Plus un media
dossier dans chaque sous-dossier contenant des images dans l'onglet OneNote.
Je recommande d'exporter chacun de vos blocs-notes OneNote sous forme de .mht
fichier (page Web à fichier unique) ou, si vous préférez, a .pdf
. De cette façon, en cas de perte de formatage ou d'autres informations dans certains de vos fichiers de démarque, en raison de la conversion multiple, vous pouvez toujours revenir en arrière et voir facilement à quoi il devait ressembler dans le .mht
fichier. En outre, je recommanderais d'exporter chacun de vos blocs-notes OneNote sous forme de .onepkg
fichier (package OneNote), afin que vous ayez une belle copie d'exportation finale si vous souhaitez rouvrir le bloc-notes dans OneNote dans son format de fichier natif / original (cela pourrait être utile si, par exemple, le .mht
fichier manque également une mise en forme originale que vous souhaitez récupérer).
Lorsque vous terminez chaque bloc-notes, cliquez avec le bouton droit sur le bloc-notes dans OneNote et cliquez sur "Fermer ce bloc-notes" afin de ne pas modifier accidentellement le bloc-notes et d'avoir à réexporter vos nouvelles modifications. Pour les dossiers de démarque, j'ai également créé un dossier pour chaque bloc-notes et y ai mis tous les dossiers d'onglets.
Lorsque vous avez terminé le projet d'exportation, vous pouvez accéder à votre OneDrive et supprimer tous les originaux de vos blocs-notes OneNote qui y ont été synchronisés (assurez-vous de sauvegarder vos propres fichiers maintenant, bien sûr! Il y a OneDrive pour Linux, ou vous pourrait essayer quelque chose comme Syncthing).
Enfin, nous pouvons renommer tous nos fichiers .md en leur titre de page OneNote, qui est la première ligne de chaque fichier, en utilisant deux scripts. Créez les fichiers suivants:
Fichier 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
Fichier 2: ~/scripts/recurse.sh
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Ensuite, accédez à votre dossier de notes et exécutez la recurse.sh
commande en utilisant la rename-files-to-first-line.sh
commande comme argument:
$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
Vous verrez le script parcourir tous vos fichiers de manière récursive, jetant quelques erreurs sur les fichiers avec des premières lignes étranges (qui ne se convertiront pas en nom de fichier) et sur d'autres cas marginaux. Cependant, la mv
commande in rename-files-to-first-line
est exécutée avec un argument -n
, ce qui l'empêchera d'écraser les fichiers. Il peut y avoir quelques notes qui ne sont pas renommées, car la première ligne qu'elles contiennent est vide ou quelque chose de bizarre, mais vous pouvez simplement corriger ces quelques fichiers manuellement.
Profitez de votre évasion propre de OneNote.