在一个 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