Как запускать команды оболочки 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"), и он должен работать намного лучше.