可能是一个 `dired-aux.el' 的 bug

在一个 git 仓库中打开 dired 进入 Dired/date Mode:

新建立一个文件,光标移动到该新文件位置,执行 ! (dired-do-shell-command)

输入命令:

git add -f

在 4 个 版本的 Emacs 中,只有 25.1 成功:

GNU Emacs 25.1.1 (i686-w64-mingw32) of 2016-11-15

(Shell command succeeded with no output)

GNU Emacs 26.2 (build 1, x86_64-w64-mingw32) of 2019-04-13

Invalid switch - /B

GNU Emacs 26.3 (build 1, x86_64-w64-mingw32) of 2019-08-29

Invalid switch - /B

Emacs 26.3 (build 1, i686-w64-mingw32) of 2019-08-29

Invalid switch - /B

以上 Emacs 中输入的命令,全部在 Emacs -q 启动之后执行。

我的操作系统:

OS Name Microsoft Windows 7 Enterprise
Version 6.1.7601 Service Pack 1 Build 7601

有遇到相同问题的 Emacs 用户吗?

更新 1 ---------------------------------------------------------------------------

另外一台机器上,测试了两个版本:

OS Name Microsoft Windows 7 Ultimate
Version 6.1.7601 Service Pack 1 Build 7601

GNU Emacs 26.1 (build 1, x86_64-w64-mingw32) of 2018-05-30

GNU Emacs 26.2 (build 1, x86_64-w64-mingw32) of 2019-04-13

没有问题。

更新 2 -----------------------------------------------------------------------------

继续测试:

c:\abc.txt 是一个只含 dummy 的纯文本。

`(shell-command "type C:\\abc.txt")`

→ dummy

(shell-command "start /b type C:\\abc.txt")

or

(shell-command "start /b type C:/abc.txt")

(shell-command "start /b type C://abc.txt")

结果在 25.1 和 26.3 都是

→255 (#o377, #xff) Invalid switch - /B

我用 C:\Windows\system32\cmd.exe 输入:

start /b type C:/abc.txt
→ dummy

继续用 cmdproxy 测试

C:\Program Files (x86)\GNU Emacs 25.1\libexec\emacs\25.1\i686-w64-mingw32\cmdproxy.exe

start /b type C:/abc.txt
→ dummy

C:\Program Files\emacs-26.3-x86_64\libexec\emacs\26.3\x86_64-w64-mingw32\cmdproxy.exe

start /b type C:/abc.txt
→ dummy

看来问题不在cmdproxy.exe