On Mon, Aug 15, 2016 at 11:01 AM, Eli Zaretskii wrote: > From my POV, as long as Emacs itself doesn't produce such shell > commands and/or environment variables for any of its features, > avoiding this becomes user's responsibility, just like when working at > the shell prompt. Of course, if we can find a reliable solution to > the problem that doesn't take away features, that'd be better, So I have been thinking about this. As far as I can tell, the %CD:~,0% hack is the only way to solve it. We can make it conditional on having command extensions enabled, see attached. The probing command I used for the default value for w32-shell-command-extensions causes an error while dumping ("Searching for program: No such file or directory, C:/Users/npostavs/src/emacs/emacs-25/nt/cmdproxy.exe") so I've commented it out for now. With this patch, (let ((w32-shell-command-extensions t) (process-environment (cl-list* "ca^=with-caret" "ca=without-caret" process-environment))) (insert (shell-command-to-string (format "echo %s %s %s" "%ca%" (shell-quote-argument "%ca%") "%%CD:~,0%ca%%CD:~,0%")))) gives without-caret "%ca%" %ca% If this approach makes sense I can fix up the patch.