Tüm OneNote sayfalarını ayrı ayrı işaretleme dosyalarına nasıl aktarabilirim?


14

Linux'a geçiyorum ve son engel OneNote'tan çıkmak. Tüm defterlerimi dışa aktarmak istiyorum, böylece her sayfa ayrı bir etiketleme dosyasına gider.

Birçok şey denedim - bu konu birkaç öneri vardı, ama hepsi modası geçmiş.

OneNote'un tüm sayfaları tek tek .docx dosyaları olarak dışa aktarmasını sağlayabilirsem, bunları tek tek markdown dosyalarına dönüştürmek için pandoc kullanmak kolay olurdu. Ancak, OneNote yalnızca birden çok sayfayı tek bir dosya olarak dışa aktarır. Dolayısıyla, bir yol, her bir sayfanın tek tek dışa aktarılmasını otomatikleştirmenin bir yolunu bulmak olacaktır.

Başka bir seçenek de bir kerede tüm not defterlerini .docx dosyası olarak dışa aktarmak, bunları pandoc ile işaretlemeye dönüştürmek ve sonra dosyaları bölmektir - ancak, dosyaları sadece temel ile doğru şekilde kesmek için csplit almak için bir normal ifade sihirbazından yeterli değilim düzenli ifadeler ve doğru ve tam düzenli ifade ile dosyaları çıktı almak için bir awk sihirbazı yeterli değil.

Biri bana bu konuda yardımcı olabilir mi?

Yanıtlar:


12

Sonunda bir ihracat boru hattı buldum, ama bu bir acıydı. İşte bunu yapmaktan notlar:

iş akışı:

  1. Her dışa aktarmadan sonra OneNote'un uzun bir OneDrive senkronizasyonu yapmasını önlemek için ağlarınızı kapatın.

  2. Not Defterleri listesinde, tüm sekmeleri görmek için not defterini genişletin.

  3. Bir sekmeyi sağ tıklayın ve "Dışa aktar ..." ı tıklayın.

  4. Dosya türü açılır menüsünü tıklayın ve biçimi Mseçmek için tuşuna basın .docx. Seçmek Enteriçin tuşuna basın .

  5. EnterDışa aktarılan dosyayı kaydetmek için tekrar basın .

  6. Dizüstü bilgisayardaki her sekme için 2-5. Adımları tekrarlayın.

  7. Pandoc kurun ve bir PowerShell veya cmd penceresi açın.

  8. dışa aktarılan .docxdosyaların bulunduğu dizine cd .

  9. Dışa aktarılan her .docxdosya için, işaretlemeye dönüştürmek üzere aşağıdaki pandoc komutunu kullanın ( journaldosyanızın adıyla değiştirin ):

    pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
    

    Komutun bir açıklaması: --extract-media=''pandoc'a .docxdosyadan görüntüleri almasını ve bunları varsayılan alt klasöre (varsayılan olarak 'media' olarak adlandırılır) koymasını söyler. --wrap=preservepandoc'a çıktı dosyasını satır aralıklarıyla (bu varsayılan değerdir) sağlam bir şekilde sarmamasını söyler. Bir sonraki alan girdi dosya -oadıdır ve 'çıktı' anlamına gelir journal.md, çıktı dosya adı da öyle.

    Bu dosyayı bölmek istemiyorsanız (örneğin, sekmenizde yalnızca bir sayfa varsa), 15. adıma atlayın.

    (Bunlardan bir demet yaparken , kabuktaki önceki komutu geri çağırmak için (yukarı ok) tuşuna basıp dosya adını düzenleyebilirsiniz.)

  10. Sayfaları sekmede depolamak için yeni bir klasör oluşturun. Bu örnek için, şu anda OneNote'ta Dergi sekmemizdeki tüm sayfalar içinde eziliyor journal.md. journalAyrılmış son sayfaları ayrı ayrı .md dosyaları olarak depolayacak bir klasör oluşturun.

  11. .docxDosyada herhangi bir görüntü varsa , bunlar adlı yeni bir klasöre aktarılır media. Medya klasörünü (varsa) şimdi oluşturduğunuz klasöre sürükleyin. (Bu yüzden her pandoc işlemini ayrı ayrı yapmamız gerekiyor, çünkü her dışa aktarma ayrı bir medya klasörü oluşturacak ve bunları ayrı tutmak istiyoruz, böylece markdown dosyalarındaki bağlantılar doğru çalışıyor. Tüm bunları yapmak için akıllı bir komut dosyası yazabiliriz. otomatik olarak, ancak çok sayıda not defteriniz yoksa manuel olarak yapmanız daha az zaman alacaktır.) (Not: İstediğiniz klasör adını --extract-media=''bağımsız değişkenin tek tırnaklarına koyarak resim kaydedebilirsiniz - resimli .docxdosyalar için , sizin için otomatik olarak bir klasör oluşturulur.)

  12. .mdDosyayı içeren dizine bir bash terminali ve cd açın . 10. adımda oluşturduğunuz klasör, bunun bir alt klasörü olmalıdır (aşağıdaki komutta yolu düzeltmediyseniz).

  13. Henüz yapmadıysanız, Windows Bash pencere simgesine tıklayın, Özellikler'e tıklayın, Hızlı Düzenleme Modunu kontrol edin ve ardından Tamam'a tıklayın. Şimdi Windows Bash pencere simgesine tekrar tıklayın, bu kez Varsayılanlar'a tıklayın, QuickEdit Modunu kontrol edin ve ardından Tamam'a tıklayın (böylece gelecekte oluşturacağınız yeni Bash pencereleri bu ayarı hatırlayacaktır). Artık terminalde metin seçebilir ve kopyalamak için Ctrl+ tuşuna basabilir Cveya metni panoya yapıştırmak için terminal penceresine sağ tıklayabilirsiniz. Şimdi komutumuzu ayrı bir yerde hazırlayabilir ve her sürümü hızlı bir şekilde Bash'e yapıştırabiliriz.

  14. Aşağıdaki komutu özelleştirin ve .mdayrı sayfalara bölmek istediğiniz her dosya için çalıştırın :

    csplit ./journal.md --keep-files --prefix='journal/journalentry ' --suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'

    (Tek satır olarak yazın.)

    Gördüğünüz gibi journal.md, işaretleme dosyamızın adı (şu anki dizinde, ile belirtilir ./), ikinci journal(sonra --prefix=') oluşumu , bölünmüş dosyaları içerecek olan alt klasörümüzün adıdır ve journalentryher dosyanın adı verilir (ardından bir dizin numarası gelir).

    Komutu anlamak istiyorsanız, işte bir açıklama: --keep-fileshatalar veya dosyanın sonu ile karşılaşıldığında dosyaları hala yazdırır, son sayfanın doğru şekilde çıkmasını sağlar (normal ifademizin deseninde sona ermediğinden). --prefixçıktı dosyalarının adlandırma düzenini ayarlar. --suffix-formatdosya uzantımızı ayarlamamıza izin verir ( .mdbu durumda), ancak %idosyanın dizin numarasını veren sprintf deyimini eklememiz gerekir .  --elide-empty-filesumursamadığımız boş dosyaların çıktısını atlar. Son olarak, ile başlayan '/ve biten düzenli ifade/-2', dosyanın ne zaman bölüneceğini tanımlar: satırın başında (/) (^) öğesini bulduğunuzda (() Pazartesi veya (\ |) Salı veya Çarşamba veya Perşembe veya Cuma veya Cumartesi veya Pazar () ) ve ardından virgül ekleyin, iki satır geri çekilin (-2) "ve dosyayı oraya bölün ve şimdiye kadar elimizde olan çıktıyı alın. Son bit, '{*}'dosyanın sonuna ulaşılana kadar önceki komutu süresiz olarak tekrarlar.

  15. .docxVe .mddosyalarını bir klasöre sürükleyin, şimdi oluşturduğunuz bir klasörü söyleyin intermediates. Veya sadece silebilirsiniz. Geri dönüp dönüştürme işlemi sırasında meydana gelen bir şeye başvurmak istemeniz durumunda, yeni dosya biçiminizle rahat oluncaya kadar bunları bir süre kaydetmek güzeldir. Şimdi onları ara klasöre taşımak, nerede olduğumuzu unutma ve adımları tekrarlama şansına sahip olacak.

  16. .docxOneNote'tan dışa aktardığınız her dosya için 9-14 arasındaki adımları tekrarlayın .

  17. Artık her sekme için bir klasör var, içinde ayrı ayrı .mddosyalar var, her sayfa için bir klasör var ! Ayrıca media, her alt klasörde OneNote sekmesinde görüntüleri olan bir klasör.

  18. OneNote not defterlerinizin her birini bir .mhtdosya (Tek Dosya Web Sayfası) olarak dışa aktarmanızı veya isterseniz a .pdf. Bu şekilde, işaretleme dosyalarınızın bazılarında biçimlendirme veya diğer bilgiler kaybolmuşsa, çoklu dönüşüm nedeniyle, her zaman geri dönebilir ve .mhtdosyaya nasıl bakması gerektiğini kolayca görebilirsiniz . Buna ek olarak, OneNote not defterlerinizin her birini bir .onepkgdosya (OneNote Paketi) olarak dışa aktarmanızı öneririm , bu nedenle Not Defteri'ni OneNote'ta kendi özgün / orijinal dosya biçiminde yeniden açmak isterseniz güzel bir son dışa aktarma kopyanız olur (bu yararlı olabilir) örneğin, .mhtdosyada kurtarmak istediğiniz bazı orijinal biçimlendirme de eksikse).

  19. Her bir not defterini tamamladığınızda, OneNote'ta not defterini sağ tıklayın ve "Not Defterini Kapat" ı tıklayın, böylece not defterini yanlışlıkla düzenlemeyip yeni değişikliklerinizi yeniden dışa aktarmanız gerekmez. İşaretleme klasörleri için, her not defteri için bir klasör oluşturdum ve tüm sekme klasörlerini içine koydum.

  20. Tüm dışa aktarma projesini bitirdiğinizde, OneDrive'ınıza gidip orada senkronize edilen tüm OneNote dizüstü bilgisayar orijinallerinizi silebilirsiniz (elbette kendi dosyalarınızı yedeklediğinizden emin olun! Linux için OneDrive var veya Eşitleme gibi bir şey deneyebilir).

  21. Son olarak, tüm .md dosyalarımızı iki komut dosyası kullanarak her dosyadaki ilk satır olan OneNote sayfa başlıklarıyla yeniden adlandırabiliriz. Aşağıdaki dosyaları yapın:

    Dosya 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
    

    Dosya 2: ~/scripts/recurse.sh

    CDIR=$(pwd)
    for i in $(ls -R | grep :); do
        DIR=${i%:}                    # Strip ':'
        cd $DIR
        $1                            # Your command
        cd $CDIR
    done
    

    Ardından notlar klasörünüze gidin recurse.shve rename-files-to-first-line.shkomutu bağımsız değişken olarak kullanarak komutu çalıştırın :

    $ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
    

    Komut dosyasının tüm dosyalarınızı tekrar tekrar yürüttüğünü göreceksiniz, garip ilk satırlara sahip dosyalara (dosya adına dönüştürülmeyecek) ve diğer uç durumlarda bazı hatalar atıyorsunuz. Ancak, mvkomut, herhangi bir dosyanın üzerine yazmasını engelleyen rename-files-to-first-lineargüman ile yürütülür -n. Yeniden adlandırılmayan birkaç not olabilir, çünkü içlerindeki ilk satır boş veya garip bir şeydir, ancak bu birkaç dosyayı manuel olarak düzeltebilirsiniz.

  22. OneNote'tan temiz kaçışınızı yaşayın.

Uyarılar:

  • Bu, alt sayfaları yakalamaz; isterseniz alt alt klasörleri yeniden oluşturmanız gerekir.

  • Tablolar ile ne kadar iyi bilmiyorum - markdown zaten tablolar için biraz hantal.

  • Dışa aktarma sırasında kaybolan veya sıkışan yazı tipleri gibi muhtemelen başka biçimlendirme türleri vardır. Ancak zengin metin ve görüntüler için oldukça iyi çalışıyor!


1
OneNote
Nikhil'de

4
Vay be, ne dağınıklık. Bu yazılımla hiç not almaya başlamamalıydım. Tüm bunları yazdığınız için teşekkürler! Bugün itibariyle macOS altında OneNote için dışa aktarma özelliği bulunmadığını unutmayın.
slhck

Ortaya çıkan MD dosyalarını bundan Notion'a aktarmaya çalışan var mı? işe yaradı mı?
JayPex

Ayrıca, not defteri bölümünde her biri benzersiz bir başlığa sahip yüzlerce sayfanız varsa, bu gerçekçi değildir, yalnızca belirli bir adlandırma stiline sahipseniz çalışır. Yine de çabayı takdir ediyorum.
JayPex

6

Diğer cevap benim için kesmedi, çünkü notlarım günlük girişleri değil, ancak Microsoft'un Grafik API'sını kullanarak bir çözüm buldum . Bu, OneNote'u çalıştırmanız bile gerekmediği anlamına gelir, yalnızca notlarınızın Microsoft hesabınızla senkronize edilmesini gerektirir ve daha sonra notlarınızı mükemmel biçimlendirilmiş HTML olarak alabilirsiniz (tarayıcıda görüntüleyebilir veya istediğiniz biçime dönüştürebilirsiniz) Pandoc kullanarak).

Sihir bu Python betiğinde olur . Microsoft hesabınıza giriş yapmak için kullanabileceğiniz basit bir yerel web sunucusu çalıştırır ve bunu yaptıktan sonra tüm notlarınızı HTML olarak indirir, resimleri ve ekleri orijinal biçimlerinde indirir ve orijinal yapıyı koruyarak dosya hiyerarşisinde depolar. (sayfa sırası ve alt sayfalar dahil).

Komut dosyasını çalıştırmadan önce, Grafik API'sına erişebilmesi için Microsoft Azure'da bir "uygulama" kaydetmeniz gerekir:

  1. Https://aad.portal.azure.com/ adresine gidin ve Microsoft hesabınızla oturum açın.
  2. "Azure Active Directory" yi ve ardından "Yönet" altında "Uygulama kayıtları" nı seçin.
  3. "Yeni kayıt" ı seçin. Herhangi bir ad seçin, "Desteklenen hesap türleri" ni "Herhangi bir kuruluş dizinindeki ve kişisel Microsoft hesaplarındaki hesaplar" olarak ayarlayın ve "URI'yi Yeniden Yönlendir" altında Web'i seçin ve girin http://localhost:5000/getToken. Kayıt ol.
  4. "Uygulama (istemci) kimliğini" kopyalayın client_idve Python betiğinin başlangıcına yapıştırın .
  5. "Yönet" altında "Sertifikalar ve sırlar" ı seçin. "Yeni müşteri sırrı" na basın, bir ad seçin ve onaylayın.
  6. İstemci sırrını kopyalayın secretve Python betiğindeki gibi yapıştırın .
  7. "Yönet" altında "API izinleri" ni seçin. "İzin ekle" ye basın, aşağı kaydırın ve OneNote'u seçin, "Temsilci izinleri" ni seçin ve "Notlar.Okuma" ve "Notlar.Okuma.All" seçeneklerini işaretleyin. "İzin ekle" ye basın.

Ardından Python bağımlılıklarını yüklemeniz gerekir. Python 3.7 (veya daha yenisi) kurulu olduğundan emin olun ve komutları kullanarak bağımlılıkları yükleyin pip install flask msal requests_oauthlib.

Şimdi betiği çalıştırabilirsiniz. Bir terminalde, komut dosyasının bulunduğu dizine gidin ve kullanarak çalıştırın python onenote_export.py. Bu, 5000 numaralı bağlantı noktasında yerel bir web sunucusu başlatır.

Tarayıcınızda http: // localhost: 5000'e gidin ve Microsoft hesabınıza giriş yapın. İlk kez yaptığınızda, uygulamanın OneNote notlarınızı okuyabileceğini de kabul etmeniz gerekir. (Bu, Azure portalında oluşturduğunuz istemci kimliğini ve sırrını paylaşmadığınız sürece üçüncü taraflara verilerinize erişim izni vermez). Bundan sonra, ilerlemeyi takip etmek için terminale geri dönün.

Not: Microsoft, belirli bir süre içinde kaç istek yapabileceğinizi sınırlar. Bu nedenle, çok sayıda notunuz varsa, sonunda terminalde bunun gibi mesajlar görebilirsiniz: Too many requests, waiting 20s and trying again.Bu bir sorun değildir, ancak tüm sürecin biraz zaman alabileceği anlamına gelir. Ayrıca, oturumun süresi bir süre sonra dolar TokenExpiredError. Bu durumda, http: // localhost: 5000'i yeniden yükleyin , komut dosyası devam eder (önceden indirilmiş dosyaları atlar).


Daha basit bir çözüm, Ama bu MD değil dosyaları HTML alır
JayPex

1
Cevapta kısaca bahsettiğim gibi, HTML'yi işaretlemeye dönüştürmek için pandoc kullanabilirsiniz (örn. pandoc --from html --to markdown -o output.md input.html). Ancak, tüm OneNote sayfalarının işaretleme sırasında mükemmel bir şekilde temsil edilemeyeceğine dikkat edilmelidir, böylece bazı biçimlendirme ayrıntılarını kaybedebilirsiniz. Ayrıca, pandoc çeşitli işaretleme lezzetlerini destekler, böylece kullanımınıza uygun olanı bulmak için belgeleri okumak isteyebilirsiniz.
danmou

İlk cevapta uzun rotayı kullanmadan önce kesinlikle denemeye değer. Teşekkürler!
JayPex

4

OneNote sayfalarınızı tek tek işaretlemeye ( .md) aktarmak için Joplin ve Evernote'u yüklemeniz gerekir .

Bu bağlantıda önerildiği gibi , önce notları Evernote'a aktarırsınız. Ardından tüm notları .enexEvernote'tan bir dosyaya aktarın ve Joplin'e aktarın.

Joplin, notları .mddosya olarak dışa aktarma seçeneğine sahiptir .

Not: Notlarınızı gruplandırmak istiyorsanız Evernote'ta bayraklar kullanmanızı öneririm, çünkü notlar arasında hiyerarşiyi tutmanın Evernote yolu OneNote'tan farklıdır.


1
Harikasın! Cevabınız bana defter bölümlerini Evernote'a, sonra bunları Evernote'tan Notion'a aktarmam için ilham verdi! Teşekkürler
JayPex

0

Bunun için program dışı bir çalışma buldum.

TLDR;

OneNote'tan Evernote'a ve sonra Notion'a (İsteğe bağlı) dışa aktarın, ardından istediğiniz bir formatta tek tek dosyalar olarak dışa aktarın.


Notlarımı Notion'dan dışa aktarmak için gerçekten uğraşıyorum, çevrimiçi bir bakış OneNote sayfalarını dışa aktarmak ve bölmek ve onları md veya html dosyalarına dönüştürmek için gerçekten kirli bazı yollar döndürecektir. Ne dağınıklık!

Temel olarak OneNote bölümlerinizi Evernote'a kolayca aktarabilirsiniz, masaüstü için Evernote'u indirdikten sonra bunu yapmak oldukça kolaydır, oradan da bunları Notion'a aktarmak da aynı derecede kolaydır.

Sadece aynı organizasyonu korumak istiyorsanız bölümleri tek tek içe aktarmak isteyebilirsiniz, aksi takdirde tüm bölümleri toplu olarak içe aktarabilirsiniz, sayfalar bölüm adlarıyla etiketlenir ve bu da Notion'a kadar uzanır.

Microsoft / Outlook hesabınıza giriş yapıp OneNote 2016 kullanılarak senkronize edildiğini doğrulayarak OneNote not defterlerinizi senkronize etmeniz gerektiğini lütfen unutmayın.

Bu yardımcı olur umarım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.