0
(shell-command "\"C:\\Documents and Settings\\ggustafson\\Desktop\\stuff\\ctags58\\ctags.exe\" -eR -f \"C:\\Documents and Settings\\ggustafson\\Desktop\\BlueTooth_7020\\TAGS\" \"C:\\Documents and Settings\\ggustafson\\Desktop\\BlueTooth_7020\"")

(message "\"C:\\Documents and Settings\\ggustafson\\Desktop\\stuff\\ctags58\\ctags.exe\" -eR -f \"C:\\Documents and Settings\\ggustafson\\Desktop\\BlueTooth_7020\\TAGS\" \"C:\\Documents and Settings\\ggustafson\\Desktop\\BlueTooth_7020\"")

トップフォームを実行すると、エラーが発生します'C:\Documents' is not recognized as an internal or external command, operable program or batch file.。2 番目のフォームがバッファに入れる出力を実行する*Messages*と、意図したとおりに動作します (タグ ファイルが作成されます)。

両方の手法で同じ結果が得られないのはなぜですか? shell-commandシェルに送信する前に文字列を変更する何かをしますか? elisp を使用して、コマンド プロンプトに貼り付けた場合とまったく同じように文字列を実行するにはどうすればよいですか?

shell-quote-argumentどちらの方法でも実行できない文字列を生成するため、どちらも機能しません。

(message (shell-quote-argument "\"C:\\Documents and Settings\\ggustafson\\Desktop\\stuff\\ctags58\\ctags.exe\" -eR -f \"C:\\Documents and Settings\\ggustafson\\Desktop\\BlueTooth_7020\\TAGS\" \"C:\\Documents and Settings\\ggustafson\\Desktop\\BlueTooth_7020\""))
"^\"\\^\"C:\\Documents and Settings\\ggustafson\\Desktop\\stuff\\ctags58\\ctags.exe\\^\" -eR -f \\^\"C:\\Documents and Settings\\ggustafson\\Desktop\\BlueTooth_7020\\TAGS\\^\" \\^\"C:\\Documents and Settings\\ggustafson\\Desktop\\BlueTooth_7020\\^\"^\""
4

3 に答える 3

1

実行が同じパスを使用しているかどうか、したがって同じctags.exe. それが問題かもしれないと思います。それを確認するために、へのフル パスを使用することをお勧めしますctags.exe

-Re通常のシェルでオプションを使用すると、ctags (Linux) で同じエラーが発生します。それが私がそう思う理由です。

于 2013-07-11T15:39:37.987 に答える