我们希望使用sbcl和asdf uiop:run-program
从Lisp中调用Windows shell命令。
我们在Windows 10上使用sbcl 1.3.6在emacs / slime下所做的工作。 64位和asdf 3.1.5。是:
CL-USER>(require 'asdf)
(shadowing-import 'asdf::run-program)
然后,正确的(在Unix上)是这样的:
CL-USER>(run-program "echo test" :output :string)
"test
"
NIL
0
CL-USER>
但是什么根本不起作用,错误是文件的任何操作:
(run-program "dir")
(run-program "copy foo.txt tmp")
(run-program "xcopy *.texi tmp")
有或没有:output :string
作为参数。我们不确定我们是否做错了,或者是否存在与sbcl或asdf相关的错误,或者asdf和sbcl是否仍支持此功能。可比的shell命令似乎在Unix上运行良好。
任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
在过去的几个月里,对Windows上sbcl的运行程序的支持得到了显着改善,特别是得益于Elias Pipping的努力,以及Robert Goldman和我的大量测试和错误修复。
获取最新的SBCL 1.3.15和最新的ASDF 3.2.0(甚至是“测试”分支中的3.2.0.2),它应该可以更好地工作。