Acabei encontrando um pipeline de exportação, mas foi uma dor. Aqui estão minhas anotações para fazer isso:
Desative suas redes para impedir que o OneNote execute uma sincronização longa do OneDrive após cada exportação.
Na lista Cadernos, expanda o caderno para ver todas as guias.
Clique com o botão direito do mouse em uma guia e clique em "Exportar ...".
Clique no menu suspenso do tipo de arquivo e pressione Mpara selecionar o .docx
formato. Pressione Enterpara selecioná-lo.
Pressione Enternovamente para salvar o arquivo exportado.
Repita as etapas 2 a 5 para cada guia do notebook.
Configure o pandoc e abra uma janela do PowerShell ou cmd.
cd no diretório em que os .docx
arquivos exportados estão localizados.
Para cada .docx
arquivo exportado , use o seguinte comando pandoc para convertê-lo em markdown (substitua journal
pelo nome do seu arquivo):
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Aqui está uma explicação do comando: --extract-media=''
diz ao pandoc para extrair imagens do .docx
arquivo e colocá-las na subpasta padrão (denominada 'mídia' por padrão). --wrap=preserve
diz ao pandoc para não quebrar o arquivo de saída com quebras de linha (que é o padrão). O próximo campo é o nome do arquivo de entrada e -o
significa 'output', assim journal.md
como o nome do arquivo de saída.
Se você não deseja dividir este arquivo (por exemplo, se sua guia contiver apenas uma página), pule para a etapa 15.
(Quando você faz várias delas, pode pressionar a ↑tecla (seta para cima) para recuperar o comando anterior no shell e editar o nome do arquivo.)
Crie uma nova pasta para armazenar as páginas na guia. Neste exemplo, no momento, todas as páginas da guia Diário no OneNote são agrupadas journal.md
. Crie uma pasta chamada journal
que armazenará as páginas separadas finais como arquivos .md individuais.
Se houver alguma imagem no .docx
arquivo, elas serão exportadas para uma nova pasta chamada media
. Arraste a pasta de mídia, se existir, para a pasta que você acabou de criar agora. (É por isso que precisamos executar cada operação pandoc separadamente, porque cada exportação criará uma pasta de mídia separada e queremos mantê-las separadas para que os links nos arquivos de marcação funcionem corretamente. Poderíamos escrever um script inteligente para fazer tudo isso automaticamente, mas levará menos tempo para fazê-lo manualmente, a menos que você tenha um grande número de notebooks.) (Observação: você pode salvar uma etapa colocando o nome da pasta desejado entre aspas simples do --extract-media=''
argumento - por.docx
arquivos com imagens, uma pasta será criada automaticamente para você.)
Abra um terminal bash e cd no diretório que contém o .md
arquivo. A pasta que você criou na etapa 10 deve ser uma subpasta desta (a menos que você corrija o caminho no comando a seguir).
Se você ainda não o fez, clique no ícone da janela do Windows Bash, clique em Propriedades, verifique o Modo Edição Rápida e clique em OK. Agora clique no ícone da janela do Windows Bash novamente, desta vez clique em Padrões, marque o Modo de Edição Rápida e clique em OK (para que as novas janelas do Bash criadas no futuro lembrem dessa configuração). Agora você pode selecionar o texto no terminal e pressionar Ctrl+ Cpara copiar, ou clique com o botão direito do mouse na janela do terminal para colar o texto na área de transferência. Agora podemos preparar nosso comando em um local separado e colar rapidamente cada versão no Bash.
Personalize o seguinte comando e execute-o para cada .md
arquivo que você deseja dividir em páginas individuais:
csplit ./journal.md --keep-files --prefix='journal/journalentry '
--suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(Digite como uma linha.)
Como você pode ver, journal.md
é o nome do nosso arquivo de remarcação (no diretório atual, indicado por ./
), a segunda ocorrência de journal
(depois --prefix='
) é o nome da nossa subpasta que conterá os arquivos divididos ejournalentry
será o nome de cada arquivo (seguido por um número de índice).
Se você deseja entender o comando, aqui está uma explicação: --keep-files
ainda imprime arquivos quando erros ou o final do arquivo é encontrado, garantindo que a última página seja impressa corretamente (já que não termina no padrão de nossa expressão regular). --prefix
define o esquema de nomeação dos arquivos de saída. --suffix-format
permite definir nossa extensão de arquivo ( .md
nesse caso), mas devemos incluir %i
a instrução sprintf que gera o número de índice do arquivo. --elide-empty-files
pula a saída de arquivos vazios, com os quais não nos importamos. Finalmente, a expressão regular, que começa '/
e termina com/-2'
, define quando dividir o arquivo: diz "Quando você encontra (/) no início da linha (^) o seguinte (() segunda ou (\ |) terça ou quarta ou quinta ou quinta ou sexta ou sábado ou domingo () ) seguido por vírgula, retroceda duas linhas (-2) "e divida o arquivo lá, exibindo o que temos até agora. O bit final'{*}'
, repete o comando anterior indefinidamente, até o final do arquivo ser atingido.
Arraste os arquivos .docx
e .md
para uma pasta, digamos que uma pasta criada agora seja chamada intermediates
. Ou você pode simplesmente excluí-los. É bom salvá-los por um tempo, até você se sentir confortável com seu novo formato de arquivo, caso deseje voltar e fazer referência a algo que aconteceu durante o processo de conversão. Movê-los para a pasta intermediários agora terá poucas chances de esquecer onde estamos e de repetir etapas.
Repita as etapas 9 a 14 para cada .docx
arquivo exportado do OneNote.
Agora você tem uma pasta para cada guia, com um monte de .md
arquivos separados , uma para cada página! Além disso, uma media
pasta em cada subpasta que tinha imagens na guia OneNote.
Eu recomendo exportar cada um dos blocos de anotações do OneNote como um .mht
arquivo (página da web de arquivo único) ou, se preferir, a .pdf
. Dessa forma, se houver perda de formatação ou outras informações em alguns dos seus arquivos de remarcação, devido à conversão múltipla, você sempre poderá voltar e ver com facilidade como deveria aparecer no .mht
arquivo. Além disso, eu recomendo exportar cada um dos seus blocos de anotações do OneNote como um .onepkg
arquivo (pacote OneNote), para que você tenha uma boa cópia final de exportação, se desejar reabrir o Notebook no OneNote em seu formato de arquivo nativo / original (isso pode ser útil se, por exemplo, .mht
também estiver faltando alguma formatação original no arquivo que você deseja recuperar).
Ao terminar cada bloco de anotações, clique com o botão direito do mouse no OneNote e clique em "Fechar este bloco de anotações" para não editar acidentalmente o bloco de anotações e ter que reexportar suas novas alterações. Para as pastas de remarcação, também criei uma pasta para cada bloco de anotações e coloquei todas as pastas da guia.
Ao concluir todo o projeto de exportação, você pode ir para o OneDrive e excluir todos os originais dos blocos de anotações do OneNote que foram sincronizados (verifique se você está fazendo backup de seus próprios arquivos agora, é claro! Existe o OneDrive para Linux ou você poderia tentar algo como Syncthing).
Por fim, podemos renomear todos os nossos arquivos .md para o título da página do OneNote, que é a primeira linha de cada arquivo, usando dois scripts. Faça os seguintes arquivos:
Arquivo 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
Arquivo 2: ~/scripts/recurse.sh
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Em seguida, navegue até a pasta do Notes e execute o recurse.sh
comando usando o rename-files-to-first-line.sh
comando como argumento:
$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
Você verá o script percorrer todos os seus arquivos recursivamente, lançando alguns erros em arquivos com primeiras linhas estranhas (que não serão convertidas em um nome de arquivo) e em outros casos extremos. No entanto, o mv
comando in rename-files-to-first-line
é executado com argumento -n
, o que impedirá a substituição de arquivos. Pode haver algumas notas que não são renomeadas, porque a primeira linha nelas está em branco ou é outra coisa estranha, mas você pode corrigir esses poucos arquivos manualmente.
Aproveite o seu escape limpo do OneNote.