由于URI名称中的空格,节点的exec()无法正常工作

时间:2015-08-28 01:41:51

标签: javascript node.js windows path escaping

var exec = require('child_process').exec
var cmd = 'C:\\Users\\Johnny Cash\\Desktop\\executeme.exe'

exec(cmd, function(e, stdout, stderr) {
  console.log(e);
  console.log(stdout);
  console.log(stderr);
});
  

' C:\用户\约翰尼'不被视为内部或外部命令

这必须是有史以来最新的问题,但如何在窗户上使用空格来逃避这些路径?它在太空中被切断,我所做的一切(预先单人或双人逃跑)似乎都可以解决问题。 exec()做了一些我不知道的格式吗?

2 个答案:

答案 0 :(得分:5)

execcommand参数字符串中的任何空格视为参数分隔符,因此您需要对整个路径进行双引号,以将其全部视为要运行的命令的路径:

var cmd = '"C:\\Users\\Johnny Cash\\Desktop\\executeme.exe"'

但是,仅使用execFile可能更简洁,因为其file参数始终被视为文件路径,并带有单独的args参数。那么你应该能够省略双引号包装。 execFile无论如何都有点精简,因为它不像exec那样执行子shell。

答案 1 :(得分:0)

您需要使用^(插入符号)字符来掩盖URI中的空格字符:

var cmd = 'C:\\Users\\Johnny^ Cash\\Desktop\\executeme.exe'