2017-03-02 180 views
2

我們希望從Lisp中使用sbcl和asdf uiop:run-program調用Windows shell命令。如何使用asdf運行Windows shell命令asdf uiop:運行程序在sbcl下

我們在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相關的錯誤,或者該功能是否仍然被windows 10的asdf和sbcl支持。可比較的shell命令在Unix上似乎很好。

任何幫助將不勝感激。

回答

1

在過去的幾個月中,對Windows上sbcl的運行程序的支持得到了顯着改善,特別是得益於Elias Pipping的努力,以及Robert Goldman和我進行的大量測試和錯誤修復。

抓住最新的SBCL 1.3.15和最新的ASDF 3.2.0(甚至從「測試」分支3.2.0.2),它應該更好。

+0

事實上,使用sbcl 1.3.15和asdf 3.2.0它的效果更好。使用通配符進行Xcopy和複製工作。 Md和Rd工作。不幸的是,Del只適用於當前目錄中的單個文件,不適用於通配符(這很可惜,因爲這是我們需要的),而不適用於使用路徑給出的文件。 Dir仍然出錯。 Chdir沒有任何作用,我們必須手動設置* default-pathname-defaults *。但是,這是一個了不起的進展。非常感謝你。 –

+0

是否uiop:刪除目錄樹和朋友幫助? –

+0

'uiop:chdir'和綁定'* default-pathname-defaults *'是互補的,不是重疊的變化。 –