>>48 情報サンクス
環境変数PATHに限るなら >>48 のコマンドが最適だね

perlにこだわってたのは、複数引数に拡張しようと思ってたからなんだけど
-----------------------------------------------------------------
perl -e \
'foreach(@ARGV){ print qq/(setenv "$_" "/,`cygpath -amp "$ENV{$_}" | tr -d "\n"`,"\")\n"}' \
PATH HOMEPATH SHELL > ~/.emacs.d/site-lisp/shell_env.el
-----------------------------------------------------------------

こんな感じにすればperlは必要ないね。cygpathの改行を除去する必要もないし
-----------------------------------------------------------------
for i in "PATH" "HOMEPATH" "SHELL"; do
echo "(setenv \"$i\" \"`eval cygpath -amp '"''$'$i'"'`\")"
done > ~/.emacs.d/site-lisp/shell_env.el
-----------------------------------------------------------------
(evalでゴニョゴニョしてる部分は何とかできないかな)