[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:09172] ファイルのエンコーディングを一括変換したいのですが。。



関藤と申します。

表題の件ですが。

過去ログを見つけて、フォルダごと文字コードを変換する関数を見つけたのです
が、サブディレクトリ
には対応してくれません。サブディレクトリまで再帰的に対応させるには、どの
ようにしたらいいでしょ
うか。lisp のスキルがないもので、対応できずに苦慮しております。

どなたかご教授いただけないでしょうか、よろしくお願いします。


;; ディレクトリ内のファイルのエンコーディングを一括置換
(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)
(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)))
(and buffer (delete-buffer buffer)))))
(message "done"))

Index Home