Cuối cùng tôi đã tìm thấy một đường ống xuất khẩu, nhưng đó là một nỗi đau. Dưới đây là những lưu ý của tôi khi làm điều đó:
Tắt (các) mạng của bạn để ngăn OneNote thực hiện đồng bộ hóa OneDrive dài sau mỗi lần xuất.
Trong danh sách Notebook, mở rộng notebook để xem tất cả các tab.
Nhấp chuột phải vào một tab và nhấp vào "Xuất ...".
Nhấp vào menu thả xuống filetype và nhấn Mđể chọn .docx
định dạng. Nhấn Enterđể chọn nó.
Nhấn Entermột lần nữa để lưu tệp đã xuất.
Lặp lại các bước 2-5 cho mỗi tab trong sổ ghi chép.
Thiết lập pandoc và mở cửa sổ PowerShell hoặc cmd.
cd vào thư mục chứa .docx
các tập tin đã xuất .
Đối với mỗi .docx
tệp được xuất , sử dụng lệnh pandoc sau để chuyển đổi nó thành markdown (thay thế journal
bằng tên tệp của bạn):
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Đây là một lời giải thích về lệnh: --extract-media=''
yêu cầu pandoc trích xuất hình ảnh từ .docx
tệp và đặt chúng vào thư mục con mặc định (được đặt tên là 'media' theo mặc định). --wrap=preserve
nói với pandoc không cứng bọc tệp đầu ra với ngắt dòng (là mặc định). Trường tiếp theo là tên tệp đầu vào và -o
là viết tắt của 'đầu ra', journal.md
tên tệp đầu ra cũng vậy.
Nếu bạn không muốn tách tệp này (ví dụ: nếu tab của bạn chỉ chứa một trang), hãy bỏ qua bước 15.
(Khi bạn đang thực hiện một loạt các thao tác này, bạn có thể nhấn phím ↑(mũi tên lên) để gọi lại lệnh trước đó trong trình bao, sau đó chỉnh sửa tên tệp.)
Tạo một thư mục mới để lưu trữ các trang trong tab. Trong ví dụ này, ngay bây giờ tất cả các trang từ tab Tạp chí của chúng tôi trong OneNote được trộn lẫn với nhau trong journal.md
. Tạo một thư mục được gọi journal
sẽ lưu các trang được phân tách cuối cùng dưới dạng tệp .md riêng lẻ.
Nếu có bất kỳ hình ảnh nào trong .docx
tập tin, chúng sẽ được xuất sang một thư mục mới có tên media
. Kéo thư mục phương tiện, nếu nó tồn tại, vào thư mục bạn vừa tạo. (Đây là lý do tại sao chúng ta cần thực hiện từng thao tác pandoc một cách riêng biệt, bởi vì mỗi lần xuất sẽ tạo một thư mục phương tiện riêng và chúng tôi muốn giữ các liên kết này riêng biệt để các liên kết trong tệp đánh dấu hoạt động chính xác. Chúng tôi có thể viết một tập lệnh thông minh để thực hiện tất cả điều này tự động, nhưng sẽ mất ít thời gian hơn để thực hiện thủ công, trừ khi bạn có số lượng lớn sổ ghi chép.) (Lưu ý: Bạn có thể lưu một bước bằng cách đặt tên người dùng mong muốn của mình vào dấu ngoặc đơn của --extract-media=''
đối số đối với .docx
các tệp có hình ảnh, một thư mục sẽ được tạo tự động cho bạn.)
Mở một bash terminal và cd vào thư mục chứa .md
tệp. Thư mục bạn đã tạo ở bước 10 phải là thư mục con của thư mục này (trừ khi bạn sửa đường dẫn trong lệnh sau).
Nếu bạn chưa có, hãy nhấp vào biểu tượng cửa sổ Windows Bash, nhấp vào Thuộc tính, kiểm tra Chế độ QuickEdit, sau đó bấm OK. Bây giờ bấm vào biểu tượng cửa sổ Windows Bash một lần nữa, lần này bấm vào Mặc định, kiểm tra Chế độ QuickEdit, sau đó bấm OK (vì vậy các cửa sổ Bash mới mà bạn tạo trong tương lai sẽ ghi nhớ cài đặt này). Bây giờ bạn có thể chọn văn bản trong thiết bị đầu cuối và nhấn Ctrl+ Cđể sao chép hoặc nhấp chuột phải vào cửa sổ thiết bị đầu cuối để dán văn bản vào bảng tạm. Bây giờ chúng ta có thể chuẩn bị lệnh của mình ở một vị trí riêng biệt và nhanh chóng dán từng phiên bản vào Bash.
Tùy chỉnh lệnh sau và chạy nó cho từng .md
tệp bạn muốn chia thành các trang riêng lẻ:
csplit ./journal.md --keep-files --prefix='journal/journalentry '
--suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(Nhập nó dưới dạng một dòng.)
Như bạn có thể thấy, journal.md
là tên của tệp đánh dấu của chúng tôi (trong thư mục hiện tại, được ký hiệu là ./
), lần xuất hiện thứ hai của journal
(sau --prefix='
) là tên của thư mục con của chúng tôi sẽ chứa các tệp được phân tách và journalentry
là tên của mỗi tệp sẽ được đặt tên (theo sau là một số chỉ mục).
Nếu bạn muốn hiểu lệnh, đây là một lời giải thích: --keep-files
vẫn in các tệp khi gặp lỗi hoặc kết thúc tệp, đảm bảo trang cuối cùng sẽ được xuất chính xác (vì nó không kết thúc theo mẫu biểu thức chính quy của chúng tôi). --prefix
thiết lập sơ đồ đặt tên của các tập tin đầu ra. --suffix-format
cho phép chúng tôi đặt phần mở rộng tệp của mình ( .md
trong trường hợp này), nhưng chúng tôi phải đưa %i
vào câu lệnh sprintf để xuất số chỉ mục của tệp. --elide-empty-files
bỏ qua các tập tin trống mà chúng tôi không quan tâm. Cuối cùng, biểu thức chính quy, bắt đầu bằng '/
và kết thúc bằng/-2'
, xác định thời điểm phân chia tệp: thông báo "Khi bạn tìm thấy (/) ở đầu dòng (^) sau (() Thứ hai hoặc (\ |) Thứ ba hoặc Thứ tư hoặc Thứ năm hoặc Thứ sáu hoặc Thứ bảy hoặc Chủ nhật () ) theo sau là dấu phẩy, lùi lại hai dòng (-2) "và tách tệp ở đó, xuất ra những gì chúng ta có cho đến bây giờ. Bit cuối cùng '{*}'
, lặp lại lệnh trước đó vô thời hạn, cho đến khi kết thúc tập tin.
Kéo .docx
và .md
tập tin vào một thư mục, giả sử một thư mục bạn tạo bây giờ được gọi intermediates
. Hoặc bạn chỉ có thể xóa chúng. Thật tuyệt khi lưu chúng trong một thời gian, cho đến khi bạn cảm thấy thoải mái với định dạng tệp mới của mình, trong trường hợp bạn muốn quay lại và tham khảo một cái gì đó đã xảy ra trong quá trình chuyển đổi. Di chuyển chúng vào thư mục trung gian bây giờ sẽ thô lỗ cơ hội quên chúng ta đang ở đâu và lặp lại các bước.
Lặp lại các bước 9-14 cho mỗi .docx
tệp bạn đã xuất từ OneNote.
Bây giờ bạn có một thư mục cho mỗi tab, với một loạt các .md
tệp riêng biệt trong đó, một tệp cho mỗi trang! Cộng với một media
thư mục trong mỗi thư mục con có hình ảnh trong tab OneNote.
Tôi khuyên bạn nên xuất từng sổ ghi chép OneNote của mình dưới dạng .mht
tệp (Trang web tệp đơn) hoặc, nếu bạn muốn, a .pdf
. Bằng cách này, nếu bị mất định dạng hoặc thông tin khác trong một số tệp đánh dấu của bạn, do có nhiều chuyển đổi, bạn luôn có thể quay lại và dễ dàng xem cách nhìn trong .mht
tệp. Ngoài ra, tôi khuyên bạn nên xuất từng sổ ghi chép OneNote của mình dưới dạng .onepkg
tệp (Gói OneNote), để bạn có một bản sao xuất cuối cùng đẹp nếu bạn muốn mở lại Notebook trong OneNote ở định dạng tệp gốc / gốc (điều này có thể hữu ích nếu, ví dụ, .mht
tập tin cũng thiếu một số định dạng ban đầu mà bạn muốn khôi phục).
Khi bạn hoàn thành mỗi sổ ghi chép, bấm chuột phải vào sổ ghi chép trong OneNote và bấm "Đóng sổ ghi chép này" để bạn không vô tình chỉnh sửa sổ ghi chép và phải xuất lại các thay đổi mới của bạn. Đối với các thư mục đánh dấu, tôi cũng tạo một thư mục cho mỗi sổ ghi chép và đặt tất cả các thư mục tab vào đó.
Khi bạn kết thúc với toàn bộ dự án xuất, bạn có thể truy cập OneDrive của mình và xóa tất cả các bản gốc sổ ghi chép OneNote đã được đồng bộ hóa ở đó (tất nhiên hãy chắc chắn rằng bạn đang sao lưu các tệp của riêng mình, dĩ nhiên, có OneDrive cho Linux hoặc bạn có thể thử một cái gì đó như Syncthing).
Cuối cùng, chúng tôi có thể đổi tên tất cả các tệp .md của mình thành tiêu đề trang OneNote của họ, đây là dòng đầu tiên trong mỗi tệp, bằng cách sử dụng hai tập lệnh. Tạo các tệp sau:
Tệp 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
Tệp 2: ~/scripts/recurse.sh
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Sau đó điều hướng đến thư mục ghi chú của bạn và chạy recurse.sh
lệnh bằng cách sử dụng rename-files-to-first-line.sh
lệnh làm đối số:
$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
Bạn sẽ thấy tập lệnh đi qua tất cả các tệp của mình một cách đệ quy, đưa ra một số lỗi trên các tệp có dòng đầu tiên kỳ lạ (sẽ không chuyển thành tên tệp) và trong các trường hợp cạnh khác. Tuy nhiên, mv
lệnh trong rename-files-to-first-line
được thực thi với đối số -n
, điều này sẽ ngăn nó ghi đè lên bất kỳ tệp nào. Có thể có một vài lưu ý không được đổi tên, bởi vì dòng đầu tiên trong đó trống hoặc có gì đó lạ, nhưng bạn chỉ có thể sửa một vài tệp theo cách thủ công.
Đắm mình trong lối thoát sạch sẽ của bạn từ OneNote.