org 文件批量导出为 HTML

目录

有时我们希望用 shell 脚本去批量让 org 文件导出为 HTML,下面说一下怎么做到。

编写 elisp 脚本

#!/usr/bin/emacs  --script

;filename export.el
;加载 init.el 文件 我使用的 spacemacs
(load-file "/home/jimila/spacemacs/.emacs.d/init.el")
(require 'ox)

; 遍历我的博客目录
(defun walk-path (dir action)
   "walk DIR executing ACTION with (dir file)"
   (cond ((file-directory-p dir)
          (or (char-equal ?/ (aref dir(1- (length dir))))
              (setq dir (file-name-as-directory dir)))
          (let ((lst (directory-files dir nil nil t))
                 fullname file)
            (while lst
              (setq file (car lst))
              (setq lst (cdr lst))
              (cond ((member file '("." "..")))
                    (t
                     (and (funcall action dir file)
                          (setq fullname (concat dir file))
                          (file-directory-p fullname)
                          (walk-path fullname action)))))))
         (t
          (funcall action
                   (file-name-directory dir)
                   (file-name-nondirectory dir)))))


; 把 org 文件导出为 HTML 文件
(defun export-html (dir file)
  (setq a-file-name (concat dir file))
  (if (string-match ".org$" a-file-name)
    (progn
        (print a-file-name)
        (find-file a-file-name)
        (org-html-export-to-html)
    )
   )
  t
)

; 把我 blog 目录下所有 org 文件都导出为 HTML
(walk-path "/home/jimila/Desktop/blog/doc/" 'export-html)

执行

HOME=~/spacemacs  emacs  -Q    --script epxort.el

目录