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

dsp*_*099 0 javascript windows escaping path node.js

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);
});
Run Code Online (Sandbox Code Playgroud)

"C:\ Users\Johnny"未被识别为内部或外部命令

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

Joh*_*yHK 6

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

var cmd = '"C:\\Users\\Johnny Cash\\Desktop\\executeme.exe"'
Run Code Online (Sandbox Code Playgroud)

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

  • 如果我需要将参数传递给“exec”(这是另一个带空格的长字符串)怎么办? (2认同)