古いadviceの書き方で申し訳ないけどexec-path-from-shellは考えてみたよ。NTEmacs+Cygwinだと動きます。

(defadvice exec-path-from-shell-setenv (around ad-exec-path-from-shell-setenv activate)
(let ((path-separator ":"))
ad-do-it
(when (string= (ad-get-arg 0) "PATH")
(setenv (ad-get-arg 0) (mapconcat (lambda (arg) (replace-regexp-in-string "/" "\\\\" arg))
(parse-colon-path value) ";")))))

(defadvice exec-path-from-shell-printf (around ad-exec-path-from-shell-printf activate)
(cl-letf (((symbol-function 'executable-find)
(symbol-function 'identity)))
(let ((exec-path-from-shell-arguments '("-l")))
ad-do-it)))

(exec-path-from-shell-initialize)