如果我这样做:
my program = "C:\\MyPath\\MyProg.exe";
system(("start", $program));
MyProg启动很好,我的脚本在system()命令后恢复。但是如果路径中有空格,比如
my program = "C:\\My Path\\MyProg.exe";
system(("start", $program));
似乎运行cmd,而不是MyProg。
我试过用以下内容引用:
my program = "C:\\My Path\\MyProg.exe";
system(("start", '"' . $program . '"'));
但似乎没有任何帮助。
当然我可以使用fork()来解决它,但我想知道为什么我不能传递一个以空格为参数的路径。
答案 0 :(得分:3)
这是因为内置的start
命令在引用方面有点奇怪。您可以使用start "C:\My Path\MyProg.exe"
在命令行上重现此操作,并查看相同的结果。要正确执行它,您需要一组空引号:start "" "C:\My Path\MyProg.exe"
。
所以你的最终结果应该是:
my program = "C:\\My Path\\MyProg.exe";
system('start "" "' . $program . '"');
已编辑以包含来自ikegami的suggesstion。我的perl有点生疏,因为我多年没用过它了。
答案 1 :(得分:0)
尝试......
my program = "C:/\"My Path\"/MyProg.exe";
答案 2 :(得分:0)
我不是perl专家,但我找到了以下链接。
http://bytes.com/topic/perl/answers/697488-problem-system-command-windows