ネットワークをオフにして、エクスポート後にOneNoteが長時間のOneDrive同期を実行しないようにします。
[ノートブック]リストでノートブックを展開して、すべてのタブを表示します。
タブを右クリックし、[エクスポート...]をクリックします。
ファイルタイプのドロップダウンをクリックし、を押しMて.docx
フォーマットを選択します。を押しEnterて選択します。
Enterもう一度押すと、エクスポートされたファイルが保存されます。
ノートブックのタブごとに手順2〜5を繰り返します。
pandocをセットアップし、PowerShellまたはcmdウィンドウを開きます。
エクスポートされた.docx
ファイルがあるディレクトリにcdします。
エクスポートされた.docx
ファイルごとに、次のpandocコマンドを使用して、それをマークダウンに変換しjournal
ます(ファイルの名前に置き換えます)。
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
コマンドの説明は次のとおりです。ファイル--extract-media=''
から画像を抽出.docx
してデフォルトのサブフォルダー(デフォルトでは「media」という名前)に配置するようpandocに指示します。--wrap=preserve
pandocに、出力ファイルを改行(デフォルト)でハードラップしないように指示します。次のフィールドは入力ファイル名で、-o
「出力」を表しjournal.md
、出力ファイル名も同様です。
このファイルを分割したくない場合(たとえば、タブに1ページしか含まれていない場合)は、手順15に進みます。
(これらを↑まとめて実行しているときは、(上矢印)キーを押してシェルで前のコマンドを呼び出し、ファイル名を編集できます。)
タブにページを保存するための新しいフォルダーを作成します。この例では、現在、OneNoteの[ジャーナル]タブのすべてのページがでマッシュされていjournal.md
ます。journal
最終的に分離されたページを個別の.mdファイルとして保存するというフォルダを作成します。
.docx
ファイル内に画像があった場合、これらの画像はという新しいフォルダにエクスポートされますmedia
。メディアフォルダーが存在する場合は、今作成したフォルダーにドラッグします。(このため、エクスポートごとに個別のメディアフォルダーが作成され、マークダウンファイル内のリンクが正しく機能するようにこれらを個別に保持したいので、各パンドック操作を個別に実行する必要があります。これを行うための巧妙なスクリプトを書くことができます。自動的に実行されますが、大量のノートブックがない限り、手動で実行する方が時間がかかりません。)(注:--extract-media=''
引数の単一引用符で目的のフォルダー名を指定.docx
すると、画像を含むファイルの場合、ステップを節約できます。フォルダが自動的に作成されます。)
bashターミナルを開き、.md
ファイルを含むディレクトリにcdします。手順10で作成したフォルダーは、このフォルダーのサブフォルダーである必要があります(次のコマンドでパスを修正しない限り)。
まだ行っていない場合は、Windows Bashウィンドウのアイコンをクリックし、[プロパティ]をクリックし、[クイック編集モード]をチェックして、[OK]をクリックします。Windows Bashウィンドウのアイコンをもう一度クリックします。今度は[デフォルト]をクリックし、[クイック編集モード]をオンにして、[OK]をクリックします(今後作成する新しいBashウィンドウには、この設定が記憶されます)。ターミナルでテキストを選択してCtrl+ Cを押してコピーするか、ターミナルウィンドウを右クリックしてテキストをクリップボードに貼り付けます。これで、コマンドを別の場所に準備し、各バージョンをBashにすばやく貼り付けることができます。
次のコマンドをカスタマイズして、.md
個別のページに分割するファイルごとに実行します。
csplit ./journal.md --keep-files --prefix='journal/journalentry '
--suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(1行で入力してください。)
ご覧のとおり、journal.md
はマークダウンファイルの名前です(現在のディレクトリ内で、で示されます./
)。2番目に出現するjournal
(の後--prefix='
)は、分割ファイルを含むサブフォルダーの名前であり、journalentry
各ファイルの名前になります(インデックス番号が後に続きます)。
コマンドを理解したい場合は、ここで説明し--keep-files
ます。エラーまたはファイルの終わりが検出された場合でもファイルを印刷し、最後のページが正しく出力されるようにします(正規表現のパターンで終わっていないため)。--prefix
出力ファイルの命名体系を設定します。--suffix-format
ファイル拡張子(.md
この場合)を設定できます%i
が、ファイルのインデックス番号を出力するsprintfステートメントに含める必要があります。 --elide-empty-files
気にしない空のファイルの出力をスキップします。最後に、次で始まる'/
と終わる正規表現/-2'
は、ファイルを分割するタイミングを定義します。「行の先頭に(/)がある場合(^)次の(()月曜日または(\ |)火曜日または水曜日または木曜日または金曜日または土曜日または日曜日() )に続けてカンマを入力し、2行(-2)だけ後退してファイルをそこに分割し、現在までの内容を出力します。最後のビット'{*}'
は、ファイルの終わりに到達するまで、前のコマンドを無期限に繰り返します。
.docx
と.md
ファイルをフォルダにドラッグします。たとえば、現在作成しているフォルダをと呼びintermediates
ます。または、それらを削除することもできます。戻って変換プロセス中に発生した何かを参照したい場合に備えて、新しいファイル形式に慣れるまで、しばらく保存しておくと便利です。それらを中間フォルダに移動すると、現在の場所を忘れてステップを繰り返す可能性がなくなります。
.docx
OneNoteからエクスポートしたファイルごとに手順9〜14を繰り返します。
これで、タブごとに1つのフォルダがあり.md
、各ページに1つずつ、多数の個別のファイルが含まれています。さらにmedia
、OneNoteタブに画像があった各サブフォルダー内のフォルダー。
OneNoteノートブックのそれぞれを.mht
ファイル(単一ファイルのWebページ)、または必要に応じて.pdf
。このように、複数の変換が原因で、一部のマークダウンファイルでフォーマットやその他の情報が失われた場合、いつでも戻って、.mht
ファイル内でどのように表示されるべきかを簡単に確認できます。さらに、OneNoteノートブックのそれぞれを.onepkg
ファイル(OneNoteパッケージ)としてエクスポートすることをお勧めします。これにより、OneNoteでノートブックをネイティブ/元のファイル形式で再び開く場合に備えて、最終的なエクスポートコピーが得られます(これは便利な場合があります)。たとえば、.mht
ファイルに回復したい元のフォーマットも含まれていない場合)。
各ノートブックを完成したら、OneNoteでノートブックを右クリックして[このノートブックを閉じる]をクリックします。これにより、誤ってノートブックを編集して、新しい変更を再エクスポートする必要がなくなります。マークダウンフォルダーについては、各ノートブック用のフォルダーも作成し、その中にすべてのタブフォルダーを配置しました。
エクスポートプロジェクト全体が完了したら、OneDriveに移動して、そこで同期されたすべてのOneNoteノートブックのオリジナルを削除できます(もちろん、今すぐ独自のファイルをバックアップしていることを確認してください!OneDrive for LinuxまたはSyncthingなどを試すことができます)。
最後に、2つのスクリプトを使用して、すべての.mdファイルの名前を各ファイルの最初の行であるOneNoteページのタイトルに変更できます。次のファイルを作成します。
ファイル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
ファイル2: ~/scripts/recurse.sh
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
次に、ノートフォルダーに移動し、recurse.sh
コマンドをrename-files-to-first-line.sh
引数として使用してコマンドを実行します。
$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
スクリプトがすべてのファイルを再帰的に処理し、奇妙な最初の行(ファイル名に変換されない)を含むファイルやその他のエッジケースでいくつかのエラーをスローすることがわかります。ただし、mv
コマンドin rename-files-to-first-line
は引数を指定して実行さ-n
れるため、ファイルが上書きされることはありません。名前が変更されないメモがいくつかある可能性があります。それらの最初の行が空白またはその他の奇妙なためですが、手動でこれらのいくつかのファイルを修正できます。
OneNoteからのすっきりとした脱出をお楽しみください。