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

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



水野というものです。以下のようなコードでいかがでしょう。
再帰的に処理するようにしただけではなく、ディレクトリも自動生成するように変更してみました。

;; ディレクトリ内のファイルのエンコーディングを一括置換(再帰版)
(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>

Index Home