[xyzzy:09173] Re: ファイルのエンコーディングを一括変換したいのですが。。
- Subject: [xyzzy:09173] Re: ファイルのエンコーディングを一括変換したいのですが。。
- From: MIZUNO Hiroki <hiroki1124@xxxxxxxxx>
水野というものです。以下のようなコードでいかがでしょう。
再帰的に処理するようにしただけではなく、ディレクトリも自動生成するように変更してみました。
;; ディレクトリ内のファイルのエンコーディングを一括置換(再帰版)
(defun convert-encoding-directory (from to encoding)
(setq from (namestring from))
(setq to (namestring to))
(or (and (path-equal from to)
(not (yes-or-no-p "入力と出力が同じっぽいっすけどいいっすか?")))
(let (buffer)
(unwind-protect
(progn
(do-events)
(setq buffer (create-new-buffer "*foo*"))
(set-buffer buffer)
(set-buffer-fileio-encoding encoding)
(mapc #'(lambda (f)
(message "~a..." f)
(create-directory
(directory-namestring (merge-pathnames f to)) :if-exists :skip)
(erase-buffer buffer)
(insert-file-contents (merge-pathnames f from))
(write-region (point-min) (point-max)
(merge-pathnames f to)))
(directory from :file-only t :recursive t)))
(and buffer (delete-buffer buffer)))))
(message "done"))
--
MIZUNO Hiroki <hiroki1124@xxxxxxxxx>