在Node.js中打开资源管理器到特定文件

3

我看过一些相关的问题,有一些打开特定文件并在资源管理器窗口中选择它的方法。命令行大致如下:

explorer.exe /select,"C:\Temp\Myfile.png"

我直接在命令提示符中运行该命令以验证其有效性,确实可以。但是,我无法在Node中以良好的方式运行它。我尝试了一些方法:

const expl = exec('cmd.exe', ["explorer.exe", `/select,"${root}\\${filename}\"`]);
const expl = spawn('cmd.exe', ["explorer.exe", `/select,"${root}\\${filename}\"`]);
const expl = exec('cmd.exe', [`explorer.exe /select,"${root}\\${filename}\"`]);

...以及其他一些变化。我并不真正知道自己在做什么。

最终,我写了一个非常丑陋的解决方案:

function openExplorerSelected(filename){

  let batfile = `explorer.exe /select,\"${root}\\${filename}\"`;
  fs.writeFile("tmp.bat", batfile, function(err){
    if( err ) console.warn(err);
    else {
      const expl = spawn('cmd.exe', ["/c", "tmp.bat"]);

    }
  })
}

它能够工作,但感觉很糟糕。

应该如何正确地完成这个任务?

2个回答

2

我不知道为什么,在这种情况下必须要作为一个 shell 来启动。对我来说这两个都可以用:

spawn('explorer.exe', [`/select,"${path}"`], {shell: true})

exec(`explorer.exe /select,"${path}"`);

0
你尝试过以可执行文件explorer.exe来运行,而不是cmd.exe吗?
const expl = exec('explorer.exe', [`/select,"${root}\\${filename}\"`]);

这会打开资源管理器,但不会跳转到正确的路径(更别提选中的文件了)。 - sg.cc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接