Как запускать команды оболочки Windows из Lisp с помощью asdf uiop:run-program под sbcl

Мы бы хотели вызывать команды оболочки Windows из Lisp, используя sbcl и asdf. uiop:run-program,

Что мы сделали в emacs/slime на Windows 10 с использованием sbcl 1.3.6. 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 для windows 10 вообще. Команды сравнимой оболочки, похоже, хорошо работают в Unix.

Любая помощь будет высоко оценен.

1 ответ

Поддержка запуска программы на sbcl в Windows была значительно улучшена за последние несколько месяцев, особенно благодаря усилиям Элиаса Пипинга, а также большому количеству тестирования и исправлению ошибок, которые мы с Робертом Голдманом сделали.

Возьмите последний SBCL 1.3.15 и последний ASDF 3.2.0 (или даже 3.2.0.2 из ветки "test"), и он должен работать намного лучше.

Другие вопросы по тегам