Node.js spawn() 调用在 Windows 上不起作用

标签 node.js windows printing

我需要使用命令行打印文件。当做类似的事情时

rundll32 C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo "d:\Temp\test.jpg" "Canon_CP1000"

在 CMD 中手动它工作得很好并且图像被打印。但是,一旦我使用 Node “spawn”命令来实现相同的行为,它就不会执行任何操作。

var spawn = require('child_process').spawn;
var cliCmd = spawn('rundll32', [
    'C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_PrintTo "d:\\Temp\\test.jpg" "Canon_CP1000"',
]);
cliCmd.stdout.on('data', function (data) {
    console.log('stdout', data);
});
cliCmd.stderr.on('data', function (data) {
    console.log('stderr', data);
});

控制台中也根本没有任何输出。生成中的其他命令有效(例如“ipconfig,['/all']”)。我还尝试将空格分隔的属性分开,并将其分别放入一个数组槽中。没有效果。

非常感谢您的帮助。谢谢!

最佳答案

使用参数数组来传递以跨越您的子进程。

var cliCmd = spawn('rundll32.exe', [
    'C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_PrintTo',  'd:\\Temp\\test.jpg', 'Canon_CP1000'
]);

此外,请确保您拥有 rundll32.exe 的全名。您可能还必须指定其路径。

关于Node.js spawn() 调用在 Windows 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31037708/

相关文章:

node.js - 在没有 Node 的情况下卸载 typescript

javascript - d3.js 安装故障排除 'Let' s 制作 map ' 教程

node.js - 如何在 Node.js 中定义机器人的默认行为?

c - 如何声明将在不同位置调用的导出函数?

javascript - 如何使用window.print()打印具有水平和垂直滚动条的DIV的全部内容?

javascript - 如何从 Grunt 任务函数运行 shell 命令

c++ - 在运行时,我如何判断我是否在 WinXP+ 上? win32

windows - 锁定执行文件 : Windows does, Linux 没有。为什么?

javascript - 如何编写打印 css 以几乎与我们从 MS word 获得的方式相同的方式从网页获得打印?

javascript - 打印 HTML 文档的特定部分