Ho finito per trovare una pipeline di esportazione, ma è stato un dolore. Ecco i miei appunti dal farlo:
Spegni le reti per impedire a OneNote di eseguire una lunga sincronizzazione OneDrive dopo ogni esportazione.
Nell'elenco Notebook, espandere il blocco note per visualizzare tutte le schede.
Fare clic destro su una scheda e fare clic su "Esporta ...".
Fai clic sul menu a discesa del tipo di file e premi Mper selezionare il .docx
formato. Premere Enterper selezionarlo.
Premere di Enternuovo per salvare il file esportato.
Ripetere i passaggi da 2 a 5 per ciascuna scheda del blocco note.
Configurare pandoc e aprire una finestra PowerShell o cmd.
cd nella directory in cui .docx
si trovano i file esportati .
Per ogni .docx
file esportato , utilizzare il seguente comando pandoc per convertirlo in markdown (sostituirlo journal
con il nome del file):
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Ecco una spiegazione del comando: --extract-media=''
dice a pandoc di estrarre le immagini dal .docx
file e inserirle nella sottocartella predefinita (denominata "media" per impostazione predefinita). --wrap=preserve
indica a pandoc di non eseguire il wrapping del file di output con interruzioni di riga (impostazione predefinita). Il campo successivo è il nome del file di input e -o
sta per "output", così journal.md
come il nome del file di output.
Se non si desidera dividere questo file (ad esempio, se la scheda conteneva solo una pagina), andare al passaggio 15.
(Quando ne esegui un mucchio, puoi premere il tasto ↑(freccia su) per richiamare il comando precedente nella shell, quindi modificare il nome del file.)
Crea una nuova cartella per memorizzare le pagine nella scheda. Per questo esempio, in questo momento tutte le pagine della nostra scheda Diario in OneNote sono unite insieme journal.md
. Crea una cartella chiamata journal
che memorizzerà le pagine separate finali come singoli file .md.
Se nel .docx
file erano presenti immagini , queste verranno esportate in una nuova cartella denominata media
. Trascina la cartella multimediale, se esiste, nella cartella che hai appena creato ora. (Questo è il motivo per cui dobbiamo eseguire ciascuna operazione pandoc separatamente, perché ogni esportazione creerà una cartella multimediale separata e vogliamo tenerli separati in modo che i collegamenti nei file di markdown funzionino correttamente. Potremmo scrivere uno script intelligente per fare tutto questo automaticamente, ma ci vorrà meno tempo per farlo manualmente, a meno che tu non abbia un numero enorme di blocchi appunti. (Nota: puoi salvare un passaggio inserendo il tuo nome utente desiderato tra le virgolette singole --extract-media=''
dell'argomento, per i .docx
file con immagini, una cartella verrà creata automaticamente per te.)
Apri un terminale bash e cd nella directory che contiene il .md
file. La cartella creata nel passaggio 10 deve essere una sottocartella di questa (a meno che non si risolva il percorso nel comando seguente).
Se non l'hai già fatto, fai clic sull'icona della finestra di Windows Bash, fai clic su Proprietà, seleziona Modalità di modifica rapida, quindi fai clic su OK. Ora fai di nuovo clic sull'icona della finestra di Windows Bash, questa volta fai clic su Impostazioni predefinite, seleziona Modalità di modifica rapida, quindi fai clic su OK (così le nuove finestre di Bash che creerai in futuro ricorderanno questa impostazione). Ora puoi selezionare il testo nel terminale e premere Ctrl+ Cper copiare o fare clic con il tasto destro del mouse sulla finestra del terminale per incollare il testo negli Appunti. Ora possiamo preparare il nostro comando in una posizione separata e incollare rapidamente ogni versione in Bash.
Personalizza il seguente comando ed eseguilo per ogni .md
file che vuoi dividere in singole pagine:
csplit ./journal.md --keep-files --prefix='journal/journalentry '
--suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(Digitalo come una riga.)
Come puoi vedere, journal.md
è il nome del nostro file markdown (nella directory corrente, indicato da ./
), la seconda occorrenza di journal
(after --prefix='
) è il nome della nostra sottocartella che conterrà i file divisi, ed journalentry
è il nome di ciascun file (seguito da un numero indice).
Se vuoi capire il comando, ecco una spiegazione: --keep-files
stampa ancora i file quando si incontrano errori o la fine del file, assicurando che l'ultima pagina venga emessa correttamente (poiché non termina nel modello della nostra espressione regolare). --prefix
imposta lo schema di denominazione dei file di output. --suffix-format
ci permette di impostare la nostra estensione di file ( .md
in questo caso), ma dobbiamo includere %i
per l'istruzione sprintf che genera il numero di indice del file. --elide-empty-files
salta l'output di file vuoti, che non ci interessano. Infine, l'espressione regolare, che inizia con '/
e termina con/-2'
, definisce quando dividere il file: dice "Quando trovi (/) all'inizio della riga (^) il seguente (() lunedì o (\ |) martedì o mercoledì o giovedì o venerdì o sabato o domenica () ) seguito da una virgola, tornare indietro di due righe (-2) "e dividere il file lì, producendo ciò che abbiamo finora. Il bit finale '{*}'
, ripete il comando precedente indefinitamente, fino a raggiungere la fine del file.
Trascina i file .docx
e .md
in una cartella, ad esempio una cartella che crei ora chiamata intermediates
. Oppure puoi semplicemente cancellarli. È bello salvarli per un po ', fino a quando non ti senti a tuo agio con il tuo nuovo formato di file, nel caso in cui desideri tornare indietro e fare riferimento a qualcosa che è accaduto durante il processo di conversione. Spostandoli nella cartella degli intermedi ora avrai la possibilità di dimenticare dove siamo e ripetere i passaggi.
Ripeti i passaggi 9-14 per ogni .docx
file esportato da OneNote.
Ora hai una cartella per ogni scheda, con un mucchio di .md
file separati , una per ogni pagina! Inoltre una media
cartella in ogni sottocartella contenente immagini nella scheda OneNote.
Consiglio di esportare ciascuno dei tuoi blocchi appunti OneNote come .mht
file (pagina Web a file singolo) o, se preferisci, a .pdf
. In questo modo, in caso di perdita di formattazione o altre informazioni in alcuni dei tuoi file di markdown, a causa della conversione multipla, puoi sempre tornare indietro e vedere facilmente come dovrebbe apparire nel .mht
file. Inoltre, consiglierei di esportare ciascuno dei tuoi blocchi appunti di OneNote come .onepkg
file (pacchetto OneNote), quindi hai una bella copia di esportazione finale se mai vuoi riaprire il blocco appunti in OneNote nel suo formato di file nativo / originale (questo potrebbe essere utile se, ad esempio, nel .mht
file mancano anche alcune formattazioni originali che si desidera ripristinare).
Al termine di ogni blocco appunti, fai clic con il pulsante destro del mouse su OneNote e fai clic su "Chiudi questo blocco appunti" in modo da non modificare accidentalmente il blocco appunti e dover riesportare le nuove modifiche. Per le cartelle di markdown, ho anche creato una cartella per ogni blocco note e ho inserito tutte le cartelle delle schede.
Quando hai finito con l'intero progetto di esportazione, puoi andare su OneDrive ed eliminare tutti gli originali dei tuoi notebook OneNote che sono stati sincronizzati lì (assicurati di eseguire il backup dei tuoi file ora, ovviamente! C'è OneDrive per Linux o tu potrebbe provare qualcosa come Syncthing).
Infine, possiamo rinominare tutti i nostri file .md con il titolo della loro pagina OneNote, che è la prima riga di ciascun file, usando due script. Crea i seguenti file:
File 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
File 2: ~/scripts/recurse.sh
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Quindi vai alla cartella delle note ed esegui il recurse.sh
comando utilizzando il rename-files-to-first-line.sh
comando come argomento:
$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
Vedrai lo script passare attraverso tutti i tuoi file in modo ricorsivo, lanciando alcuni errori sui file con prime righe strane (che non si convertiranno in un nome file) e su altri casi limite. Tuttavia, il mv
comando in rename-files-to-first-line
viene eseguito con argomento -n
, che gli impedirà di sovrascrivere qualsiasi file. Potrebbero esserci alcune note che non vengono rinominate, perché la prima riga in esse è vuota o qualcos'altro di strano, ma puoi semplicemente correggere quei pochi file manualmente.
Goditi la tua fuga pulita da OneNote.