要启动单独的控制台窗口:
?- process_create(path(cmd), ['/c', 'start', 'cmd'], []).
或者甚至更短(但我不知道它的便携性如何):
?- process_create(path(cmd), ['/c', 'start'], []).
或者这样(想法取自 SWI-Prolog 源代码):
?- getenv('COMSPEC', CMD), process_create(CMD, ['/c', 'start'], []).
要启动带有 3 个参数的外部 BAT 命令:
?- process_create(
path(cmd),
['/c', 'start', 'cmd', '/c', 'c:\\test\\test.bat', 'arg1', 'arg2', 'arg3'],
[]).
重要的提示:理论上你可以将所有这些参数作为一个字符串传递,例如。'/c start cmd ...'
而不是字符串列表,但在更复杂的情况下可能会发生奇怪的事情。就我而言,SWI-Prolog 7.2.3 在末尾添加了单引号或单双引号,因此传递给批处理脚本的最后一个参数不是arg3
but arg3'
or arg3"
.